Foros del Web » Programando para Internet » Javascript »

Validar formulario dinámico

Estas en el tema de Validar formulario dinámico en el foro de Javascript en Foros del Web. Hola. Estoy buscando la manera de hacer una validación para un formulario tipo encuesta: Pregunta 1: - Respuesta 1.1 - Respuesta 1.2 Pregunta 2: - ...
  #1 (permalink)  
Antiguo 22/02/2010, 01:16
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 22 años, 1 mes
Puntos: 20
Validar formulario dinámico

Hola. Estoy buscando la manera de hacer una validación para un formulario tipo encuesta:

Pregunta 1:
- Respuesta 1.1
- Respuesta 1.2
Pregunta 2:
- Respuesta 2.1
- Respuesta 2.2
- Respuesta 2.3

Las respuestas son con radio y con checkboxes (hay preguntas con respuesta múltiple y preguntas con respuesta única) y el formulario se genera dinámicamente, así que no puedo saber a priori cuántas preguntas y respuestas habrá.

¿Alguien me puede echar una mano para que la validación compruebe que en todas las preguntas se ha elegido alguna respuesta?

Gracias.
  #2 (permalink)  
Antiguo 22/02/2010, 07:37
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 20 años, 4 meses
Puntos: 56
Respuesta: Validar formulario dinámico

Holas, mariogl84

Estoy en las mismas que tú, pero un poquito más avanzada (pues empecé la semana pasada xD).

La forma en que lo estoy haciendo yo (y que no sé si es la mejor) es partiendo de la base de los nombres de los objetos que usas, o sea, preguntas y respuestas.

Por ejemplo, yo le di un input HIDDEN a cada pregunta, en donde el VALUE guarda el ID de la pregunta y el NAME es el mismo para todos, de modo que me genere un arreglo de preguntas. Para las respuestas tengo un input RADIO (en tu caso, habría que agregar CHECKBOX) para cada una, en donde el VALUE guarda el valor, obvio, y el NAME es el mismo para todos. El NAME lo armo juntanto una palabra clave (ejemplo "respuesta_") a la que le concateno el ID de la pregunta. El HTML queda algo así:

Código HTML:
<input type="hidden" name="pregunta" value="1"> 1. Primera pregunta: <br>
 <input type="radio" name="respuesta_1" value="A"><br> 
 <input type="radio" name="respuesta_1" value="B"> No <br>
 <input type="radio" name="respuesta_1" value="C"> Ninguna
Luego recorro con javascript el arreglo "pregunta", y por cada pregunta, como tengo su ID (el VALUE del campo HIDDEN) armo el nombre del arreglo de respuestas, llamándolo con getElementsByName(). Y así voy preguntando si hay a lo menos un checkeado, y si no, aumento un contador. Si al final del ciclo el contador es mayor a uno, pues reclama.

Eso a grandes rasgos. Yo todavía lo estoy validando (de hecho dejé unas dudas en otro tema en este mismo subforo), por lo que puede que encuentres una mejor y más óptima forma de crear tu validador.

Suerte! :D
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #3 (permalink)  
Antiguo 22/02/2010, 07:54
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 15 años, 1 mes
Puntos: 65
Respuesta: Validar formulario dinámico

Te dejo la idea:
Código HTML:
<input type="radio" value="hola" class="encuesta" /> 
<input type="radio" value="hola" class="encuesta" />
<input type="radio" value="hola" class="encuesta" />

<script type="text/javascript">
var radios = document.getElementsByClassName('encuesta');
for(i in radios){
     // en vez de hacer esto, preguntas si estan chequeados o no =P
    alert(radios[i].value);
}
</script> 
__________________
HV Studio
Diseño y desarrollo web
  #4 (permalink)  
Antiguo 24/02/2010, 04:01
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 22 años, 1 mes
Puntos: 20
Respuesta: Validar formulario dinámico

Muchas gracias a los dos por contestar. El ejemplo de quinqui con alguna diferencia me ha funcionado a la perfección, ya que había que validar por grupos.

Un saludo, gracias.

Etiquetas: formulario
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 19:17.