Ver Mensaje Individual
  #3 (permalink)  
Antiguo 26/10/2015, 10:45
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 6 meses
Puntos: 977
Respuesta: Validación 42 radiobuttons obligatorios en formulario

Si no retornas false o no utilizas el método .preventDefault(), el envío no se cancelará.

Podrías hacer algo similar a esto:
Código Javascript:
Ver original
  1. document.addEventListener("DOMContentLoaded", function(){
  2.     document.querySelector("[name=formulario]").addEventListener("submit", function(event){
  3.         event.preventDefault();
  4.  
  5.         var enviar = true,
  6.             options = this.querySelectorAll("[type=radio]"),
  7.             total = options.length
  8.             i = 0;
  9.  
  10.         for (i = 0; i < total; i++){
  11.             if (!options[i].checked){
  12.                 enviar = false;
  13.                 break;
  14.             }
  15.         }
  16.  
  17.         if (enviar){
  18.             this.submit();
  19.         }
  20.         else{
  21.             alert("Debe de seleccionar todas las opciones");
  22.         }
  23.     }, false);
  24. }, false);

Esto es simple. Luego de cargar todos los elementos del documento, registro el evento submit al formulario. Dicho evento es que el se produce cuando envías sus datos para ser procesados. Una vez ocurrido esto, ejecuto una función que recibe como argumento al objeto del evento que está ocurriendo. Mediante el método .preventDefault(), cancelo dicho envío. Declaro algunas variables, entre las que está una variable auxiliar para determinar si se realizará el envío de los datos del formulario luego de la validación y que tendrá el valor true por defecto. También tomo a los elementos de tipo "radio" del formulario (this hace referencia al formulario dentro de la función que se está ejecutando), el total de estos y una variable contadora para el bucle que usaré para realizar la validación de todos los elementos.

En el bucle, verifico que cada radiobutton esté marcado. En caso de no estarlo, asigno el valor false a la variable auxiliar y termino la ejecución del bucle. Finalmente, verifico si el valor de la variable auxiliar es true (evaluándola de esa manera, sin compararla con otro valor, se verifica si es true o false) y solo si se cumple dicha condición, realizo el envío de los datos del formulario utilizando el método .submit(); caso contrario, se muestra un mensaje de alerta en el que se le informa al usuario que debe de seleccionar todas las opciones.

Un saludo
__________________
«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