> Faqs > Recorrer elementos de formulario con un bucle

Recorrer elementos de formulario con un bucle

Estoy haciendo en javascript validaciones para unos formularios.

Tengo un código como el que escribo a continuación, pero en vez de con solo dos llamadas a la función validar_campo, hay 22 llamadas, ya que los 22 campos del formulario tienen que pasar por esta validación:

 function validacion(formulario){   
   if(validar_campo(formulario.campo1)==false)   
     return false;   
   if(validar_campo(formulario.campo2)==false)   
     return false;   
 return true;   
 } 

Me gustaría hacer algo como esto; (lo que voy a escribir se que no funciona, pero es sólo una forma de intentar explicar lo que quiero hacer)

 function validacion(formulario){   
   for(var i=1; i<23; i++){   
     if(validar_campo(formulario.campo"i")==false)   
       return false;   
   }   
   return true;   
 }   

Alguien podría ayudarme??

Respuestas

Los elementos de un formulario están en la matriz elements. Puedes conocer esa matríz en el artículo Trabajo con formularios en javascript.

En tu caso, tienes algunos errores en el código, adaptando lo que has escrito, podrías hacer algo como esto:

function validacion(formulario){   
  for(var i = 1; i < 23; i++) {   
     if(!validar_campo(formulario.elements[i]) {   
        return false;   
     }
  }   
  return true   
}

Pero el número "23" escrito en el código no es muy aconsejable, porque sin cambian los elementos del formulario tendrías que cambiar el código. Generalmente usarías formulario.elements.length y quizás restando un elemento porque el botón de submit no lo necesitas tener en cuenta.

Podría ser algo como esto:

function validacion(formulario){   
  for(var i = 1; i < formulario.elements.length - 1 ; i++) {   
     if(!validar_campo(formulario.elements[i]) {   
        return false;   
     }
  }   
  return true   
}

Pero dependería de si tienes un botón de submit, o un botón de submit y uno de cancel.

Miguel Angel
3295 146 215 17