Foros del Web » Programando para Internet » Javascript »

Completar validación de Formulario

Estas en el tema de Completar validación de Formulario en el foro de Javascript en Foros del Web. Hola chicos... tengo un código javascript que me hace una validación de que ciertos campos de un encabezado se rellenan: Nombre, Grado, etc... @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 12/05/2011, 03:00
Avatar de majete  
Fecha de Ingreso: noviembre-2007
Mensajes: 96
Antigüedad: 16 años, 5 meses
Puntos: 2
Completar validación de Formulario

Hola chicos... tengo un código javascript que me hace una validación de que ciertos campos de un encabezado se rellenan: Nombre, Grado, etc...

Código Javascript:
Ver original
  1. function validarFormulario() {
  2. if (evaluacion.nombre.selectedIndex==0) {  
  3.     alert("Debes introducir obligatoriamente el Nombre de la persona evaluada");  
  4.     evaluacion.nombre.focus(); return;  
  5.     }
  6.  
  7. myOption2 = -1;
  8.    for (u=evaluacion.grado.length-1; u > -1; u--) {
  9.    if (evaluacion.grado[u].checked) {
  10.    myOption2 = u; u = -1;
  11.    }
  12.    }
  13.    if (myOption2 == -1) {
  14.    alert("Debes introducir obligatoriamente tu grado de conocimiento de la persona evaluada");
  15.    evaluacion.id.focus(); return;
  16.    }


Entonces, mi problema viene ahora cuando quiero validar unos campos de lista desplegable en el mismo formulario, que ya no forman parte del encabezado.
No puedo utilizar el mismo método que antes porque son 30 campos y claro, se alargaría el código una barbaridad y ralentizaría la carga.

Quiero hacer un bucle FOR para que pase por todos los campos y vea si alguno no está seleccionado, me salte una venta de alerta indicando que se ha dejado en blanco alguno de los campos.

Hice esto pero como no tengo idea de programar en javascript me salta error:

Código Javascript:
Ver original
  1. var i;
  2.    for (i=1;i<=30;i++) {
  3.    if (evaluacion.i.selectedIndex==0) {  
  4.     alert("No puedes dejar en blanco ningún item. Por favor revisa el formulario y rellena todos los campos");  
  5.     evaluacion.id.focus(); return;
  6.     }
  7.     }

El id de los campos va del 1 al 30.

El código completo sería este:

Código Javascript:
Ver original
  1. <SCRIPT language="javascript">  
  2.  
  3. // Creamos la función que valida los campos de formulario  
  4. function validarFormulario() {  
  5.  
  6.  
  7. // Validamos el campo Evaluado comprobando que se ha seleccionado una opción diferente a la index0  
  8.     if (evaluacion.nombre.selectedIndex==0) {  
  9.     alert("Debes introducir obligatoriamente el Nombre de la persona evaluada");  
  10.     evaluacion.nombre.focus(); return;  
  11.     }    
  12.    
  13. // Validamos el campo Grado comprobando que se haya seleccionado alguna opción    
  14.    myOption2 = -1;
  15.    for (u=evaluacion.grado.length-1; u > -1; u--) {
  16.    if (evaluacion.grado[u].checked) {
  17.    myOption2 = u; u = -1;
  18.    }
  19.    }
  20.    if (myOption2 == -1) {
  21.    alert("Debes introducir obligatoriamente tu grado de conocimiento de la persona evaluada");
  22.    evaluacion.id.focus(); return;
  23.    }
  24.  
  25. // Validamos todos los campos numéricos
  26.    var i;
  27.    for (i=1;i<=30;i++) {
  28.    if (evaluacion.i.selectedIndex==0) {  
  29.     alert("No puedes dejar en blanco ningún item. Por favor revisa el formulario y rellena todos los campos");  
  30.     evaluacion.id.focus(); return;
  31.     }
  32.     }
  33.  
  34.    
  35. // Si se han introducido todos los campos correctamente se envia el cuestionario  
  36. // Aquí podemos enviar el formulario mediante document.formulario.submit()  
  37.  
  38.     else {  
  39.     alert("ATENCIÓN: Se va a enviar el cuestionario.\nNo cierre la ventana del navegador hasta que no vea la pantalla de confirmación del envío.");
  40.     evaluacion.submit();  
  41.     }  
  42.  
  43. }// Fin de la función validarFormulario()

Lo curioso de esto es que al cargar la página aparece el interrogante y me dice que hay un error en la línea 38, donde tengo el else ?¿?¿

¿Alguien que pueda orientarme?
Gracias
JC

Última edición por majete; 12/05/2011 a las 03:12
  #2 (permalink)  
Antiguo 12/05/2011, 03:27
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Completar validación de Formulario

No es tan curioso, else debe ser parte de un condicional iniciado por if, antes del else tienes un for.

Quita las lineas 38 y 41 y te funcionará.

Cundo se cumple los if anteriores terminas con return por lo que no llegará al alert final ni a mandar el formulario...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 12/05/2011, 04:11
Avatar de majete  
Fecha de Ingreso: noviembre-2007
Mensajes: 96
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Completar validación de Formulario

Vale... ya no me aparece el error al cargar la página, pero sí al intentar enviar el formulario... me dice:

Detalles de error de página web


Cita:
Mensaje: 'evaluacion.i.selectedIndex' es nulo o no es un objeto
Línea: 28
¿Tendrá algo que ver que los campos se llamen "1", "2", etc..? No sé de todas formas si interpreta bien el código, porque mi intención es que valide "evaluación.1.selectedIndex" al igual como si pusiera el nombre del campo tal que así "evaluacion.nombrecampo.selectedIndex".

Gracias
  #4 (permalink)  
Antiguo 12/05/2011, 04:17
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Completar validación de Formulario

Cuando te he contestado antes iva a decirte que no usarás identificadores numericos, pero al ver que te marcaba el error en el esle he corregido....

Usa

sel1
sel2
...
sel30

y usa document.getElementById("sel"+i).selectedIndex en el condicional, en lugar de evaluacion.i.selectedIndex
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 12/05/2011, 04:32
Avatar de majete  
Fecha de Ingreso: noviembre-2007
Mensajes: 96
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Completar validación de Formulario

Bingo!
Me encanta este foro... soluciones rápidas y concretas...

Muchas gracias quimfv por tu ayuda
Un saludo!
JC

Etiquetas: formulario, validar
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 04:45.