Foros del Web » Programando para Internet » Javascript »

Problemas con el array checkbox

Estas en el tema de Problemas con el array checkbox en el foro de Javascript en Foros del Web. Hola a todos del foro: Mi caso es que estoy validando el array del checkbox: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original $index=0; foreach($rsCol as $rCol){ ...
  #1 (permalink)  
Antiguo 02/06/2015, 15:49
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 9 meses
Puntos: 2
Problemas con el array checkbox

Hola a todos del foro:

Mi caso es que estoy validando el array del checkbox:

Código PHP:
Ver original
  1. $index=0;
  2. foreach($rsCol as $rCol){
  3. <input type="checkbox" name="certificado" id="certificado" value="1" onclick="return fn_marcar1('<?php echo $index; ?>')">
  4. $index++;
  5. }


1) Cuando mi array resultante tiene mas de un checkbox mi codigo JS si funciona:

Código Javascript:
Ver original
  1. function fn_marcar1(index){
  2.     var long_certificado = document.frmnoticia.certificado.length;
  3.     alert("longitud del check: "+long_certificado);  
  4.     var i;
  5.     var chk;
  6.     for (i = 0; i < long_certificado; i++) {
  7.         alert("contador "+i);
  8.         chk = certificado[i].checked;
  9.         alert("check " + chk);
  10.     }
  11. }

=>alert's
Código:
longitud del check: 2
contador 0
check false
contador 1
check true
2) Pero cuando mi array resultante tiene un SOLO checkbox mi codigo JS algo pasa que me trae UNDEFINED:

Código Javascript:
Ver original
  1. function fn_marcar1(index){
  2.     var long_certificado = document.frmnoticia.certificado.length;
  3.     alert("longitud del check: "+long_certificado);  
  4.     var i;
  5.     var chk;
  6.     for (i = 0; i < long_certificado; i++) {
  7.         alert("contador "+i);
  8.         chk = certificado[i].checked;
  9.         alert("check " + chk);
  10.     }
  11. }

=>alert's
Código:
longitud del check: undefined
Yo necesito saber para este caso si el checkbox esta en "true" o en "false" según sea el caso, y este UNDEFINED no me permite evaluar.

Por favor su apoyo, me parece que algún concepto me está faltando conocer.


Gracias de antemano por sus respuestas.
  #2 (permalink)  
Antiguo 02/06/2015, 16:55
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problemas con el array checkbox

Eso sucede porque cuando es más de uno, se genera una lista de nodos con el mismo nombre, mientras que en el segundo caso, al ser solo uno, no es una lista, solo un FormElement y por eso es que no posee la propiedad length que es propia de objetos, listas, arrays y cadenas, por lo que el resultado que obtienes es undefined.

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
  #3 (permalink)  
Antiguo 02/06/2015, 17:28
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Problemas con el array checkbox

Te agradezco mucho Alexis88.

Así me quedo:

Código Javascript:
Ver original
  1. function fn_marcar1(index){
  2.       var long_certificado = document.frmnoticia.certificado.length;
  3.       alert("longitud del check: "+long_certificado);
  4.       if(long_certificado==null){
  5.          var chkone;
  6.          chkone = document.frmnoticia.certificado.checked;
  7.          alert("checkone " + chkone);
  8.       }else{
  9.        var i; var chk;
  10.        for (i = 0; i < long_certificado; i++) {
  11.         alert("contador "+i);
  12.         chk = certificado[i].checked;
  13.         alert("check " + chk);
  14.        }
  15.     }
  16. }

Etiquetas: checkbox, funcion, input, js, php
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 15:47.