Foros del Web » Programando para Internet » Javascript »

Validar checkbox con diferente nombre

Estas en el tema de Validar checkbox con diferente nombre en el foro de Javascript en Foros del Web. que tal les platico, estoy haciendo un formulario el cual tiene dos grupos de checkbox uno definido y el otro que se crea desde una ...
  #1 (permalink)  
Antiguo 17/08/2012, 13:37
 
Fecha de Ingreso: marzo-2012
Ubicación: Guanajuato
Mensajes: 40
Antigüedad: 12 años, 2 meses
Puntos: 1
Validar checkbox con diferente nombre

que tal les platico, estoy haciendo un formulario el cual tiene dos grupos de checkbox uno definido y el otro que se crea desde una consulta, los e validado ya, pero me crean conflictos a la hora de probarlo, bueno no conflictos si no que se salta la validación de un grupo de checkbox.

este es para el que se crea desde la consulta.
Código Javascript:
Ver original
  1. valid=false;
  2.               for(i=0; ele=document.formG.elements[i]; i++){
  3.                 if (ele.type=='checkbox'){
  4.                   if (ele.checked){
  5.                     valid=true;
  6.                     }
  7.               break
  8.             }
  9.             }
  10.             if(!valid){
  11.                 alert("Seleccione un grupo o grupos para publicar!")
  12.                  document.forms["formG"]["calendar"].style.background = "#ffffff";document.forms["formG"]["comentarios"].style.background = "#ffffff";return false
  13.                 }

y es te para el que ya esta definido.
Código Javascript:
Ver original
  1. valido=false;
  2.                 for(a=0;a<esto.elements.length;a++){
  3.                 if(esto[a].type=="checkbox" && esto[a].checked==true){
  4.                 valido=true;
  5.                 break
  6.                 }
  7.  
  8.                 }
  9.                 if(!valido){
  10.                 alert("Seleccione una opción de dictamen!")
  11.                  document.forms["formG"]["calendar"].style.background = "#ffffff";document.forms["formG"]["comentarios"].style.background = "#ffffff";return false
  12.                 }
  13.                 limite=0;
  14.                 for(a=0;a<esto.elements.length;a++){
  15.                 if(esto[a].type=="checkbox" && esto[a].checked==true){
  16.                 limite+=1;
  17.                 }
  18.  
  19.                 }
  20.                 if(limite==1){
  21.                 alert("Selecciona más de una opción!");
  22.                 document.forms["formG"]["calendar"].style.background = "#ffffff";document.forms["formG"]["comentarios"].style.background = "#ffffff";return false;
  23.                 }

como es obvio ambos tienen nombres como IdGrupo[] y regla[], si alguien tiene una idea ya que yo no.
se trata que la validacion distinga que grupo de checkbox se deben validar, hasta el momento me hace solo la primer validación la segunda no la toma en cuenta.

Última edición por na_nho; 17/08/2012 a las 14:56
  #2 (permalink)  
Antiguo 17/08/2012, 16:10
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Respuesta: Validar checkbox con diferente nombre

lo unico que observo extraño es esta linea:

Código Javascript:
Ver original
  1. for(i=0; ele=document.formG.elements[i]; i++){

creo que deberia ser:
Código Javascript:
Ver original
  1. for(i=0; ele=document.formG.elements; i++){

Saludos
  #3 (permalink)  
Antiguo 17/08/2012, 16:39
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Validar checkbox con diferente nombre

@djaevi esa línea es correcta, lo que hace es comprobar en cada iteración que existe el elemento i del formulario. Si no existe eso devolverá undefined y el bucle se detendrá.

@na_nho ¿Puedes postear el código HTML? Por el momento creo que deberías guardar los forms en variables para evitar múltiples lookups y usar clases CSS en lugar de setear los estilos desde JS.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #4 (permalink)  
Antiguo 17/08/2012, 17:33
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Respuesta: Validar checkbox con diferente nombre

pero como puedes hacer un bucle desde i = 0 a un solo elemento?
siempre crei que la forma normal de iterar los elementos de un formulario es de 0 al .length de sus elementos, es evidente que sus elementos existen por algo javascript lo reconoce como elemento del formulario, ademas el esta validando que el elemento sea de tipo input y una propiedad con lo cual paral o que el necesita creo que seria suficiente, igualmente es cierto que lo mejor seria ver el html para ver bien que es lo que tiene que hacer.

Saludos!!
  #5 (permalink)  
Antiguo 17/08/2012, 18:15
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: Validar checkbox con diferente nombre

Cita:
Iniciado por djaevi Ver Mensaje
pero como puedes hacer un bucle desde i = 0 a un solo elemento?
siempre crei que la forma normal de iterar los elementos de un formulario es de 0 al .length de sus elementos, es evidente que sus elementos existen por algo javascript lo reconoce como elemento del formulario, ademas el esta validando que el elemento sea de tipo input y una propiedad con lo cual paral o que el necesita creo que seria suficiente, igualmente es cierto que lo mejor seria ver el html para ver bien que es lo que tiene que hacer.

Saludos!!
En este ejemplo no esta recorriendo un objeto esta recorriendo una lista de elementos OJO

Eso es lo que pasa cuando a veces no conoces bien las condicionales JS tu puedes usar el JS tanto como para recorrer de forma ascendente como de forma descendente y asu vez recorrer objetos.


FOR CRECIENTE O DECRECIENTE

Código Javascript:
Ver original
  1. // LA FORMA COMÚN COMO TODOS LO HACEN
  2. for(var x = 0; x < myArray.length; x++){
  3.   // CUALQUIER COSA
  4. }

Este ejemplo es la manera de como todos hacen por ejemplo para recorrer arrays, pero no la mayoría no sabe que esto en cada navegador se comporta diferente y que es lento cuando se recorre miles de datos .

Esta seria la mejor forma de recorrer un array de forma creciente o decreciente

Código Javascript:
Ver original
  1. for(var x = 0, i = myArray.length; x < i; x++){
  2.   // CUALQUIER COSA
  3. }

Es mas rapido uno porque dentro de una variable estas guardando la longitud del array y ya no es necesario estar consultandolo tal como muestra el primer for que puse como ejemplo

FOR PARA OBJETOS

Código Javascript:
Ver original
  1. // LA FORMA COMÚN COMO TODOS LO HACEN
  2. for(var x = 0; x < obj.length; x++){
  3.   var _obj = obj[x];
  4. // CUALQUIER COSA
  5. }

La forma comun de como todos hacen un for para recorrer por ejemplo un JSON o un Objeto pero como mencione antes esto es un poco lento y cada navegador lo maneja diferente

Código Javascript:
Ver original
  1. for(var x = 0; _obj = obj[x]; x++){
  2. // CUALQUIER COSA
  3. }

Esta es la forma mas que correcta mejor adecuada porque estamos accediendo directamente al puntero que indica la variable que utilizamos como índice, el unico problema aca es que debemos verificar que no devuelva null o false, tambien debemos verificar que cada elemento no sea un elemento falsy

Saludos
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #6 (permalink)  
Antiguo 17/08/2012, 19:02
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Validar checkbox con diferente nombre

Cita:
Iniciado por Dradi7 Ver Mensaje
FOR PARA OBJETOS

Código Javascript:
Ver original
  1. // LA FORMA COMÚN COMO TODOS LO HACEN
  2. for(var x = 0; x < obj.length; x++){
  3.   var _obj = obj[x];
  4. // CUALQUIER COSA
  5. }

La forma comun de como todos hacen un for para recorrer por ejemplo un JSON o un Objeto pero como mencione antes esto es un poco lento y cada navegador lo maneja diferente

Código Javascript:
Ver original
  1. for(var x = 0; _obj = obj[x]; x++){
  2. // CUALQUIER COSA
  3. }

Esta es la forma mas que correcta mejor adecuada porque estamos accediendo directamente al puntero que indica la variable que utilizamos como índice, el unico problema aca es que debemos verificar que no devuelva null o false, tambien debemos verificar que cada elemento no sea un elemento falsy

Saludos

No sé qué entiendes tú por objetos pero los objetos que yo conozco se recorren con un for...in
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #7 (permalink)  
Antiguo 17/08/2012, 23:22
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: Validar checkbox con diferente nombre

Cita:
Iniciado por _cronos2 Ver Mensaje

No sé qué entiendes tú por objetos pero los objetos que yo conozco se recorren con un for...in
No necesariamente los objetos puedes ser tambien considerados array, ademas los for in son muchos mas lentos y no es recomendable a veces su uso cuando se tiene que listar miles de datos
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #8 (permalink)  
Antiguo 20/08/2012, 09:17
 
Fecha de Ingreso: marzo-2012
Ubicación: Guanajuato
Mensajes: 40
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: Validar checkbox con diferente nombre

_cronos2 y Dradi7 gracias.. pero las validaciones si funcionan no tengo problema al recorrer el arreglo para verificar si esta vació o no, aquí el detalle es que quiero que distinga que grupo de checkbox es y no me valide ambos grupos..

no se si puedan ayudar.. :/
  #9 (permalink)  
Antiguo 20/08/2012, 18:14
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Validar checkbox con diferente nombre

¿Y cómo sabes cuál tienes que validar? ¿Qué pasa si marco una opción en cada uno? Si no nos das algunos detalles más sobre qué necesitas y qué código estás usando va a ser difícil ayudarte.
Saludos.
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #10 (permalink)  
Antiguo 21/08/2012, 08:52
 
Fecha de Ingreso: marzo-2012
Ubicación: Guanajuato
Mensajes: 40
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: Validar checkbox con diferente nombre

_cronos2 mi duda es esa, como exactamente hago para diferenciar que grupo de checkbox validar mediante su id o nombre.

te agrego el primer codigo que crea los checkbox desde la BD

Código PHP:
Ver original
  1. <tr>
  2.                     <td ><a href="includes_Admin/gruposdisponibles.php" rel="lightbox_text">Seleccionar Grupos</a>
  3.                                
  4.                             <?                         
  5.                                 $bd=Db::getInstance();
  6.                                 $id = $_POST['grupo'];
  7.                                 //print_r ($id);
  8.                                 for($i=0;$i<count($id);$i++){
  9.                                 $sql="SELECT IdGrupo, nombre FROM grupo WHERE IdGrupo = '".$id[$i]."' ORDER BY nombre";
  10.                                 $stmt=$bd->ejecutar($sql)or die(mysql_error());
  11.                                 while ($R=$bd->obtener_fila($stmt,0))
  12.                                 {
  13.                                     echo "<td><input type=checkbox id=grupo name=IdGrupo[]  value=\"".$R["IdGrupo"]."\" checked>".$R["nombre"]."</label></br></td>";
  14.                                 }
  15.                                 }
  16.                                
  17.                             ?>
  18.                    
  19.                     </td>
  20.                 </tr>

y el segundo grupo de checkbox que esta definido.

Código HTML:
Ver original
  1. <table cellspacing="10px">
  2.                     <tr>
  3.                         <td>
  4.                             <input type="checkbox" name="regla[]" value="A"  > Aprobado
  5.                         </td>
  6.                     </tr>
  7.                     <tr>
  8.                         <td>
  9.                             <input type="checkbox" name="regla[]" value="R"  > Rechazado
  10.                         </td>
  11.                     </tr>
  12.                     <tr>
  13.                         <td>
  14.                             <input type="checkbox" name="regla[]" value="AC"> Aprobado Con Condici&oacute;n
  15.                         </td>
  16.                     </tr>
  17.                     </tr>
  18.                     <tr>
  19.                         <td>
  20.                             <input type="checkbox" name="regla[]" value="E"> Excusado
  21.                         </td>
  22.                     </tr>
  23.                     <tr>
  24.                         <td>
  25.                             <input type="checkbox" name="regla[]" value="AD"> Aprobado por default
  26.                         </td>
  27.                     </tr>
  28.                 </table>

es mi duda en las funciones de arriba como hago para que me diferencie por nombre el checkbox que es y me lo valide.
  #11 (permalink)  
Antiguo 21/08/2012, 09:15
 
Fecha de Ingreso: marzo-2012
Ubicación: Guanajuato
Mensajes: 40
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: Validar checkbox con diferente nombre

ya lo pude resolver, solo era de leer un poco y de entender como funciona javascript y algunas propiedades

anexo el codigo por si alguien le es de ayuda

Código Javascript:
Ver original
  1. valid=false;
  2.              var nombre = formG.elements[i].name;
  3.               for(i=0; ele=document.formG.elements[i]; i++){
  4.                 if (ele.type=='checkbox' && ele.checked && nombre=="IdGrupo[]"){
  5.                     valid=true;
  6.                     }
  7.               break
  8.             }
  9.            
  10.             if(valid==false){
  11.                 alert("Seleccione un grupo o grupos para publicar!")
  12.                  document.forms["formG"]["calendar"].style.background = "#ffffff";document.forms["formG"]["comentarios"].style.background = "#ffffff";return false
  13.                 }

la propiedad name y como puedes hacerle una condición fue lo que utilice, no era muy dificil pero no se mucho de JS :P


Etiquetas: checkbox, validar+form
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 19:34.