Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Problema para validar checkbox!

Estas en el tema de Problema para validar checkbox! en el foro de Javascript en Foros del Web. Buenas tardes. Tengo un formulario con varios checkbox . Necesito validarlos. La idea es que la persona debe seleccionar al menos 1 casilla. Espero puedan ...
  #1 (permalink)  
Antiguo 12/11/2013, 15:57
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Sonrisa Problema para validar checkbox!

Buenas tardes.

Tengo un formulario con varios checkbox. Necesito validarlos. La idea es que la persona debe seleccionar al menos 1 casilla.
Espero puedan ayudarme.
Valido así:

Código Javascript:
Ver original
  1. function x()
  2. {
  3.         casilla = false;
  4.        
  5.         var todasLasCasillas = document.mi_formulario.checkBox; //Todos los checkbox tienen como name "checkBox"
  6.        
  7.         for (var i=0; i<todasLasCasillas.length; i++)
  8.         {
  9.             if (todasLasCasillas[i] == "checked")
  10.             {
  11.                 var casilla = true;
  12.                 break;
  13.             }
  14.         }
  15.  
  16.  
  17.         if ( casilla == false )
  18.         {
  19.             document.write("NO hay ninguna casilla seleccionada");
  20. return;
  21.         }
  22.         else
  23.         {
  24.             document.write("Hay al menos 1 casilla seleccionada");
  25. return;
  26.         }
  27.     }
}

Código HTML:
Ver original
  1. <input type="checkbox" name="checkBox" value="Radio" onblur="x()" />
  2. <input type="checkbox" name="checkBox" value="Televisión" onblur="x()" />
  3. <input type="checkbox" name="checkBox" value="Youtube" onblur="x()" />
  4. <input type="checkbox" name="checkBox" value="Facebook" onblur="x()" />


Tal cosa no funciona.
Como verán, esta función se ejecuta cuando le quitamos el foco a un checkbox. En pantalla no se muestra ni el mensaje de que hay al menos 1 casilla seleccionada ni el mensaje de que NO hay ninguna casilla seleccionada.



Saludos cordiales.
  #2 (permalink)  
Antiguo 12/11/2013, 16:06
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Problema para validar checkbox!

Hola:

Nunca debe usarse document.write con la página cargada, ya que machaca el contenido.

Tiene poco sentido la validación en "onblur"... y aunque sería mejor onchange, el evento que me pareco mejor es el envío del formulario...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 12/11/2013, 17:17
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Pregunta Respuesta: Problema para validar checkbox!

Cita:
Iniciado por caricatos Ver Mensaje
Hola:

Nunca debe usarse document.write con la página cargada, ya que machaca el contenido.

Tiene poco sentido la validación en "onblur"... y aunque sería mejor onchange, el evento que me pareco mejor es el envío del formulario...

Saludos

Gracias por responder maestro caricatos. Tengo varias anotaciones acerca de tu comentario. Espero puedas comentarlos.

1. Comentas que Tiene poco sentido la validación en "onblur". Mi idea es que cuando se validen todos los campos, aparezca un GIF animado apuntando al botón enviar (qué extrañamente nadie ve en mi formulario). Lo que se me ocurrió fue poner el onblur para que una vez que el usuario termine de llenar todos los campos, aparezca el mencionado GIF. Como sea, voy a experimentar con el onchange, como comentas.

2. No entiendo eso de que Nunca debe usarse document.write con la página cargada, ya que machaca el contenido. ¿Cómo que el document.write con la página cargada? ¿Te refieres a la página desplegada en el navegador o cómo? ¿Machaca el contenido? ¿Qué debo entender por "machacar"?

3. También comentas que el evento que me pareco mejor es el envío del formulario Tengo un botó enviar, que al dar clic se activa una función que valida todos los campos (no es la función x que puse aquí, la cual fue sólo de ejemplo para no aturdir al lector con inf que yo creo que no necesita ver).

4. Pero independientemente que sea mejor el onchange que el onblur, desde tu perspectiva, ¿el código que puse inicialmente debería funcionar bien? ¿Encuentras algún problema?

Saludos cordiales.
  #4 (permalink)  
Antiguo 13/11/2013, 00:16
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Problema para validar checkbox!

Hola:

onblur es un manejador de eventos que se dispara cuando el elemento pierde el foco, y no cuando cambia... Se puede perder el foco sin cambiar el contenido

Pero lo que tienes que saber es que lo que tienes peor es el uso de document.write.

Solo debe usarse mientras se carga la página (y si no es necesario, directamente olvidarse de que existe). Lo de machacar es así de contundente... deja de existir todo (hasta el tag html)

Haz la prueba desde cualquier página inyectando en la url:
javascript:document.write("Hola")

... Si no te importa donde escribir puedes usar:

document.body.innerHTML += "lo que sea";

O tener ocultos los mensajes y tras la comprobación mostrar el que corresponda.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 13/11/2013, 20:19
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Respuesta: Problema para validar checkbox!

Gracias por responder maestro caricatos. Lo del document.write lo puse nada más por poner algo en el ejemplo, no porque mi código esté así. Sin embargo, nunca he tenido reparo en usarlo a diestra y siniestra. Francamente no entendí a qué te refieres con eso de que hasta la etiqueta HTML se ve comprometida al usar el document.write (digo esto, porque nunca, creo, he visto "extraños" en pantalla al usar document.write -o quizá no he puesto atención. No sé). Pero voy a googlear para ver si encuentro más inf al respecto.

Por otro lado, quizá en el futuro encuentre solución al problema que me hizo abrir este post.

Lo bueno del asunto fue que se me ocurrió una solución bastante simple. No es muy elegante pero funciona. La pongo aquí por si a alguien más novato que yo llega aquí y le sirve.

Código Javascript:
Ver original
  1. if ( (nombre == "") || (apellidos == "") || (email == "") || ( (casilla01 == false) && (casilla02 == false) && (casilla03 == false) && (casilla04 == false) && (casilla05 == false)  ) )
  2.         {
  3.             ...aquí pongo lo debido en caso que algún campo no esté completado
  4.             return;
  5.         }
  6.         else
  7.         {
  8.             ...aquí pongo lo debido en caso que todos los campos estén completados.
  9.             return;
  10.         }


Saludos y hasta luego.

Última edición por berkeleyPunk; 13/11/2013 a las 20:29

Etiquetas: Ninguno
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 16:00.