Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Problemas con la validacion de 1 formulario con javascript en utilizacion AJAX

Estas en el tema de Problemas con la validacion de 1 formulario con javascript en utilizacion AJAX en el foro de Frameworks JS en Foros del Web. Hola a todos, os pongo al corriente: Lenguajes utilizados PHP, javascript con AJAX y MySQL Vereis estoy realizando un paginador de resultados en un formulario, ...
  #1 (permalink)  
Antiguo 28/04/2006, 06:11
 
Fecha de Ingreso: enero-2005
Mensajes: 115
Antigüedad: 19 años, 10 meses
Puntos: 1
Exclamación Problemas con la validacion de 1 formulario con javascript en utilizacion AJAX

Hola a todos, os pongo al corriente:
Lenguajes utilizados PHP, javascript con AJAX y MySQL
Vereis estoy realizando un paginador de resultados en un formulario, la paginacion la hace correctamente no hay problema, en cada linea he añadido un checkbox para poder seleccionar esa linea para enviar posteriormente los datos por el formulario. Una vez todo esto funciona bien cambie los enlaces para que el paginiador se cargara en un div hidden mediante AJAX. Todo esto funciona bien, controlo los checkbox seleccionados y los que no lo estan, puedo deseleccionar checbox,... todo funciona a la perfeccion PERO!!!
Como ya os he dicho cargo la pagina con AJAX y esto es porque esta pagina la meto dentro de un script http://www.dhtmlgoodies.com/index.ht...cript=tab_view que son unos paneles tipo pestañitas en esta direccion podeis ver el script, ademas la pestaña done cargo el paginador se crea dinamicamente mediante AJAX, esto lo hace el script no lo hice yo, pues bien, todo me funciona bien en las pestañas si no controlo el formulario, pero si intento controlar el formulario cuando cambio de pagina en la paginador no me reconoce el formulario. Espero haberme explicado bien, aqui os dejo el codigo que utilizo para cada cosa:

Funcion para validar los checkbox (AQUI ESTA EL PROBLEMA):
Código:
function pasoCheckPost(url){
	if(url==''){
		return;
	}
	var resto = new Array();
	var c = 0;
		for (i = 0; i < document.frm.elements.length; i++){    
        	if(document.frm.elements[i].type=="checkbox" && document.frm.elements[i].checked){
            	resto[c]=document.frm.elements[i].value;
				c++;
			}
    	}
		if(c==0){
			cargaXML2(url,"");
		}else{
			var tmp = resto.join("&listadoCanciones%5B%5D=");
			var cadena = "listadoCanciones%5B%5D=" + tmp;
			//document.write(cadena);
			cargaXML2(url,cadena);
		}
}
Paginador (mas que nada os muestro el form):
Código PHP:
//... controles de variables de sesioni y otras en cabezado ....

  
echo '<form name="frm" action="'.$_SERVER['PHP_SELF'].'" method="post">';
  echo 
'<br><table border="0" id="paginacion" class="listado-table" width="690" cellspacing="1" cellpadding="1">';
    echo 
'<thead>'//Entre <thead> y </thead> ponemos la cabecera de la tabla
        
echo '<tr><td colspan="4" align="left">&nbsp;<span class="texto_menuizq">A&ntilde;adiendo canciones a la lista:&nbsp;</span><span class="letra_std_red_b">'.((isset($_SESSION['nombre_lista'])) ? FixTextFields(getid3_lib::SafeStripSlashes($_SESSION['nombre_lista'])) : '').'&nbsp&nbsp;</span>';
        echo 
'</td>';
        echo 
'<td colspan="3" align="right"><span class="texto_menuizq">Canciones encontradas:&nbsp;</span><span class="letra_std_red_b">'.$total.'&nbsp&nbsp;</span></td></tr>';
        echo 
'<tr>';
            echo 
'<td width="24" align="center">&nbsp;</td>'//Checkbox para seleccionar            
            
echo '<td width="188" align="left" title="A&ntilde;adir cancion mendiate el checkbbox"><a href="javascript:;" target="_top" onclick="pasoCheckPost(\''.$_SERVER['PHP_SELF'].'?ordena=title';
            if(
$ordena == 'title'){
                 if(
$asc == 'ASC') echo '&asc=DESC';
                else echo 
'&asc=ASC';
            }
            echo 
'\')">    <span class="letra_std_blanca_b">&nbsp;T&iacute;tulo&nbsp;</span>';
            if(
$ordena == 'title'){
                if(
$asc == 'ASC') echo '<img src="../imagenes/upsimple.gif" border="0">';
                elseif(
$asc == 'DESC') echo '<img src="../imagenes/downsimple.gif" border="0">';
            }
            echo 
'</a></td>';
            echo 
'<td width="149" align="left" title="A&ntilde;adir cancion mendiate el checkbbox"><a href="javascript:;" target="_top" onclick="pasoCheckPost(\''.$_SERVER['PHP_SELF'].'?ordena=artist';
            if(
$ordena == 'artist'){
                 if(
$asc == 'ASC') echo '&asc=DESC';
                else echo 
'&asc=ASC';
            }
            echo 
'\')"><span class="letra_std_blanca_b">&nbsp;Artista&nbsp;</span>';
            if(
$ordena == 'artist'){
                if(
$asc == 'ASC') echo '<img src="../imagenes/upsimple.gif" border="0">';
                elseif(
$asc == 'DESC') echo '<img src="../imagenes/downsimple.gif" border="0">';
            }
            echo 
'</a></td>';
            echo 
'<td width="36" align="center" title="A&ntilde;adir cancion mendiate el checkbbox"><a href="javascript:;" target="_top" onclick="pasoCheckPost(\''.$_SERVER['PHP_SELF'].'?ordena=year';
            if(
$ordena == 'year'){
                 if(
$asc == 'ASC') echo '&asc=DESC';
                else echo 
'&asc=ASC';
            }
            echo 
'\')"><span class="letra_std_blanca_b">A&ntilde;o</span>';
            if(
$ordena == 'year'){
                if(
$asc == 'ASC') echo '<img src="../imagenes/upsimple.gif" border="0">';
                elseif(
$asc == 'DESC') echo '<img src="../imagenes/downsimple.gif" border="0">';
            }
            echo 
'</a></td>';
            echo 
'<td width="140" align="left" title="A&ntilde;adir cancion mendiate el checkbbox"><a href="javascript:;" target="_top" onclick="pasoCheckPost(\''.$_SERVER['PHP_SELF'].'?ordena=album';
            if(
$ordena == 'album'){
                 if(
$asc == 'ASC') echo '&asc=DESC';
                else echo 
'&asc=ASC';
            }
            echo 
'\')"><span class="letra_std_blanca_b">&nbsp;&Aacute;lbum&nbsp;</span>';
            if(
$ordena == 'album'){
                if(
$asc == 'ASC') echo '<img src="../imagenes/upsimple.gif" border="0">';
                elseif(
$asc == 'DESC') echo '<img src="../imagenes/downsimple.gif" border="0">';
            }
            echo 
'</a></td>';
            echo 
'<td width="66" align="left" title="A&ntilde;adir cancion mendiate el checkbbox"><a href="javascript:;" target="_top" onclick="pasoCheckPost(\''.$_SERVER['PHP_SELF'].'?ordena=genre';
            if(
$ordena == 'genre'){
                 if(
$asc == 'ASC') echo '&asc=DESC';
                else echo 
'&asc=ASC';
            }
            echo 
'\')"><span class="letra_std_blanca_b">&nbsp;G&eacute;nero&nbsp;</span>';
            if(
$ordena == 'genre'){
                if(
$asc == 'ASC') echo '<img src="../imagenes/upsimple.gif" border="0">';
                elseif(
$asc == 'DESC') echo '<img src="../imagenes/downsimple.gif" border="0">';
            }
            echo 
'</a></td>';
            echo 
'<td width="87" align="left" title="A&ntilde;adir cancion mendiate el checkbbox"><a href="javascript:;" target="_top" onclick="pasoCheckPost(\''.$_SERVER['PHP_SELF'].'?ordena=puntuacion';
            if(
$ordena == 'puntuacion'){
                 if(
$asc == 'ASC') echo '&asc=DESC';
                else echo 
'&asc=ASC';
            }
            echo 
'\')"><span class="letra_std_blanca_b">&nbsp;R&aacute;nking&nbsp;</span>';
            if(
$ordena == 'puntuacion'){
                if(
$asc == 'ASC') echo '<img src="../imagenes/upsimple.gif" border="0">';
                elseif(
$asc == 'DESC') echo '<img src="../imagenes/downsimple.gif" border="0">';
            }
            echo 
'</a></td>';
        echo 
'</tr>';
    echo 
'</thead>';
    echo 
'<tbody>'//Entre <tbody> y </tbody> ponemos los datos de la tabla ordenada
    
$listachecked = array();
  for (
$i=0$row = @mysql_fetch_array($result);$i++){ //Para cada fila devuelta de la consulta ... 
        
echo '<tr class="'.(($i%2) ? 'odd' 'even').'" 
                echo '
<td>';
echo '
<input type="checkbox" name="listadoCanciones[]" value="'.urlencode($row['filepath'].'/').urlencode($row['filename']).'" title="'.FixTextFields(getid3_lib::SafeStripSlashes($row['filepath'].'/'.$row['filename'])).'" onfocus="this.style.border=\'1px solid #f00\'" onblur="this.style.border=\'1px solid #bbb\'"'.((isset($listadoCanciones[FixTextFields(getid3_lib::SafeStripSlashes($row['filepath'].'/'.$row['filename']))])) ? '  checked' : '').'>';
                echo '
</td>';
                // ... aqui se muestra toda la informacion
                echo '
</tr>';
      echo'
</tbody>';
    echo '
</table></form>'; 
    echo '
<table border="0" class="listado-table" width="690" cellspacing="1" cellpadding="1">';
        if(isset($_REQUEST['
ordena'])) $sig_link = $_SERVER['PHP_SELF'].'?ordena='.$ordena.'&asc='.$asc.'&pag=';
        else $sig_link = $_SERVER['
PHP_SELF'].'?pag=';
      echo '
<tr><td align="center">'.paginar($pag, $total, $tampag, $sig_link,25).'</td></tr>';
      $endtime = getmicrotime();
    echo '
<tr><td><span class="texto_menuizq">File/s parsed in '.number_format($endtime - $starttime, 3).' seconds.<br></tr></td>';
    echo '
</table>';
    mysql_free_result($result2);
}else
  echo '
<span class="texto_menuizq"><img src="../imagenes/warnning.gif" border="0">&nbsp;¡ No se ha encontrado ningún registro !</a></span>';

mysql_free_result($result);
mysql_close($link);
echo '
</div></body>';
echo '
</html>;

//... mas funciones 
Y el error que meda unicamente si lo ejecuto dentro de las tabletas esas es el siguiente:
'document.frm.element.length' es nulo o no es un objeto

Este error solo sucede en las tabletas, si yo cargo la pagina fuera de las tabletas funciona correctamente, y si cargo la pagina en las tabletas pero comento la seccion del javascript que se encarga de recorrer los checkbox y crear la cadena que se pasa por POST ya no me da el error.
Alguna idea??
__________________
SaRvErOk :ojotes:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:01.