Ver Mensaje Individual
  #2 (permalink)  
Antiguo 07/06/2014, 00:34
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: Validar campos vacios en formulario con javascript una sola vez

Bienvenida a FDW

En lugar de hacerlo elemento por elemento, hazlo todo de una vez, al fin y al cabo, el proceso es el mismo.

Código Javascript:
Ver original
  1. var formulario = document.getElementById("id_formulario"),
  2.     comodin = true;
  3.  
  4. formulario.addEventListener("submit", function(event){
  5.     event.preventDefault();
  6.  
  7.     var elementos = this.elements;
  8.     for (var i in elementos){
  9.         if (!elementos[i].value.length){
  10.             alert("Debe de completar el campo " + elementos[i].name);
  11.             comodin = false;
  12.             break;
  13.         }
  14.     }
  15.  
  16.     if (comodin){
  17.         this.submit();
  18.     }
  19. }, false);

Ahora la explicación. Primero, defino dos variables; la primera de ellas representa al formulario en cuestión al cual tomo por su id y la segunda es una variable que utilizaré como comodín para determinar si todos los campos del formulario se completaron o no y así enviar o no los datos del mismo para su procesamiento. Dicho comodín iniciará con el valor booleano true. Luego, con el método addEventListener, registro el evento submit, el cual es el que se ejecuta cuando enviamos los datos de un formulario a procesarse. Esto lo hago para ejecutar una función cuando esto se produzca.

Con el método preventDefault, prevengo que se ejecute dicho evento, lo cual me permitirá evaluar a cada elemento del formulario. Enseguida, tomo al conjunto de elementos del formulario y con ayuda de una estructura repetitiva (bucle), en este caso un for...in, los itero. En cada iteración, verifico la longitud del contenido de cada elemento; si ésta es falsa, es decir, si no hay contenido alguno en el elemento, muestro un mensaje de alerta en el cual le indico al usuario que debe de completar el campo cuyo nombre especifico al final de la línea, además, el valor del comodín cambiará a false y con la sentencia break, corto el flujo del bucle, saliendo del mismo puesto que al haberse detectado un elemento vacío, no deben de enviarse los datos para procesarse.

Finalmente, realizo la evaluación del comodín; si su valor es verdadero, que da igual colocar de cualquiera de las siguientes formas:

Código Javascript:
Ver original
  1. if (comodin == true) //Forma válida
  2. if (comodin) //Forma válida

Entonces, quiere decir que todos los campos del formulario han sido completados, puesto que el valor del comodín solamente cambia cuando se detecta un campo vacío, por lo tanto, procedo a enviar los datos del formulario haciendo uso del método submit. Obviamente si el valor del comodín es falso, es decir, si se detectó algún elemento del formulario sin completar, no se realizará el envío de los datos. Antes de que me lo preguntes, la palabra reservada this, en este caso hace referencia al formulario al que estamos afectando.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 07/06/2014 a las 00:46 Razón: Fe de erratas