Foros del Web » Programando para Internet » Javascript »

Validar varios form similares en una página, c/igual nombre de campo radio

Estas en el tema de Validar varios form similares en una página, c/igual nombre de campo radio en el foro de Javascript en Foros del Web. Hola a tod@s: Mucho me han ayudado los foros de aqui, leyéndolos "desde fuera", asi que me he inscripto y va mi primer pregunta para ...
  #1 (permalink)  
Antiguo 28/11/2010, 17:58
 
Fecha de Ingreso: noviembre-2010
Ubicación: Capital Federal
Mensajes: 3
Antigüedad: 14 años
Puntos: 0
Pregunta Validar varios form similares en una página, c/igual nombre de campo radio

Hola a tod@s:
Mucho me han ayudado los foros de aqui, leyéndolos "desde fuera", asi que me he inscripto
y va mi primer pregunta para algo que hace dias no puedo resolver ni hallar respuesta:

Tengo una pag en PHP donde con un lazo genero varios formularios, con nombres consecutivos
form1, form2, form3, etc. Cada form tiene un grupo de 3 radio con el mismo nombre de variable.
Abreviando, es esto:

$i=0 ;
// inicio lazo

$i=++i;
<FORM ACTION="grabar.php" METHOD="GET" onSubmit="return validar()" NAME="form'.$i.'">
<INPUT TYPE="radio" VALUE="borrar" NAME="cali" >Borrar <br>
<INPUT TYPE="radio" VALUE="nook" NAME="cali" >Mal <br>
<INPUT TYPE="radio" VALUE="ok" NAME="cali" > Bien <br>
<INPUT type="image" img src="../img/boton_enviar.gif">
</FORM>


// fin lazo

Al ver el código fuente del navegador veo que esto anda perfecto. Ahora, si suponemos
ue cada form es independiente y al envíar solo manda SU contenido a la funcion validar,
la funcion JS más simple que se me ocurrió es:

function validar()
{if ((document.form.cali[0].checked==true)
||(document.form.cali[1].checked==true)
|| (document.form.cali[2].checked==true))
{return (true);}
else { alert(" Oppsss... ¡ FALTA LA CALIFICACIÓN ! "); return (false);}
}


Sin embargo, no funciona... Ya he probado poniendo id en los radio, indexando de otra forma
los checked en la función, recuperando los valores con getElementsByName sin éxito: la accion se ejecuta
aún sin ningun radio marcado.

¿Alguno podrá darme una sugerencia ?
Gracias desde ya.
Juan Carlos

Última edición por juancarlos2010; 28/11/2010 a las 18:09
  #2 (permalink)  
Antiguo 28/11/2010, 18:41
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 8 meses
Puntos: 461
Respuesta: Validar varios form similares en una página, c/igual nombre de campo radio

no le estas dando el nombre al formulario de la manera correcta fijate
Cita:
if ((document.form.cali[0].checked==true)
no es lo mismo que
Cita:
<FORM ACTION="grabar.php" METHOD="GET" onSubmit="return validar()" NAME="form'.$i.'">
sabiendo que i es para que vaya siendo form1, form2 y asi sucesivamente, no entiendo para que lo usas pero al no estar llamabndo al nombre correctamente del formulario no te lo realizara, deberia de ser
Código Javascript:
Ver original
  1. if ((document.form1.cali[0].checked==true)
de la misma manera indicando el nombre del form que estes usando para cada uno hasta donde tengo entendido, espero te sirva saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 28/11/2010, 18:49
 
Fecha de Ingreso: noviembre-2010
Ubicación: Capital Federal
Mensajes: 3
Antigüedad: 14 años
Puntos: 0
Respuesta: Validar varios form similares en una página, c/igual nombre de campo radio

Hey, Gracias tocayo.
No puedo poner los nombres form1, form2, etc porque la cantidad será indefinida, (puede haber solo uno o xx).
Pero me diste una pista, voy a probar mandar un return validar (this), y en la función recogerlo como (form), asi creo queda válido el nombre genérico dentro de ella... ¿que te parece?

saludos
------------------------------
EDITADO: ya probé.... y no funcionó... uffff...
Puedo pasarle a la función el valor de la variable "i", pero ...
¿como la uso para añadir al nombre del form dentro de la función?

Última edición por juancarlos2010; 28/11/2010 a las 18:57
  #4 (permalink)  
Antiguo 28/11/2010, 19:11
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 8 meses
Puntos: 461
Respuesta: Validar varios form similares en una página, c/igual nombre de campo radio

pues estoy haciendo una prueba pasando el nombre del form de esta manera pero tampoco me ha funcionado
Código HTML:
Ver original
  1. <form name="form1" action="" method="post" onsubmit="return validar(this.name)">
dejame ver algo se nos ocurrira
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #5 (permalink)  
Antiguo 28/11/2010, 19:14
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 8 meses
Puntos: 461
Respuesta: Validar varios form similares en una página, c/igual nombre de campo radio

de esta manera me funciono
Código HTML:
Ver original
  1. <form name="form1" action="" method="post" onsubmit="return validar(this)">

Código Javascript:
Ver original
  1. function validar(form){    
  2.     if(form.campo.value.length==0){
  3.         alert("hola");
  4.         return false
  5.     }
  6.     return true;
  7. }
claro yo lo hice para un campo vacio adaptalo para tu caso saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #6 (permalink)  
Antiguo 28/11/2010, 19:46
 
Fecha de Ingreso: noviembre-2010
Ubicación: Capital Federal
Mensajes: 3
Antigüedad: 14 años
Puntos: 0
Respuesta: Validar varios form similares en una página, c/igual nombre de campo radio

Carlos:
Gracias por tu dedicación. Acabo de probarlo y ahora no me deja hacer la acción
aunque marque un radio en todos los form ...ja...ja...

Si, yo avisé que era algo raro que no encontré pese a mucha búsqueda...

Creo que la cosa está en meterle en document.form.campo[0].checked==true
el nombre
como variable, para que identifique el form1, form2, etc. Esto, con un solo Form, funciona perfecto.
Ya aparecerá una forma simple, de esas que me hacen decir "¡¡cómo no se me ocurrió!!"....

saludos
  #7 (permalink)  
Antiguo 28/11/2010, 20:37
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 8 meses
Puntos: 461
Respuesta: Validar varios form similares en una página, c/igual nombre de campo radio

pues fijate lo hice aca y me funciono bien no se cual sea tu problema
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  4. <title>Documento sin t&iacute;tulo</title>
  5. <script type="text/javascript">
  6. function validar(form){        
  7.     if (form.nombre[0].checked==true || form.nombre[1].checked==true){     
  8.         alert("Lo hizo");
  9.         return true;
  10.     }
  11.     else{
  12.         alert("no lo hizo");
  13.         return false
  14.     }      
  15. }
  16. </head>
  17. <form name="form1" action="" method="post" onsubmit="return validar(this)">
  18.     <input type="radio" value="borrar" name="nombre" >Borrar <br>
  19.     <input type="radio" value="borrar" name="nombre" >Mal<br>
  20.     <input type="submit" value="...">
  21. </form>
  22. <form name="form2" action="" method="post" onsubmit="return validar(this)">
  23.     <input type="radio" value="borrar" name="nombre" >Borrar <br>
  24.     <input type="radio" value="borrar" name="nombre" >Mal<br>
  25.     <input type="submit" value="...">
  26. </form>
  27. </body>
  28. </html>
pruebalo y me avisas saludo
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way

Etiquetas: nombre, radio, similares, formulario, campos
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 23:28.