Foros del Web » Programando para Internet » Javascript »

Validacion de Check Box con indices...

Estas en el tema de Validacion de Check Box con indices... en el foro de Javascript en Foros del Web. Hola comento mi problema. Cargo una lista de check box desde PHP con el nombre Código PHP: < input type = "checkbox"  name = "g[1]"  value ...
  #1 (permalink)  
Antiguo 24/07/2006, 11:07
Avatar de Phobos  
Fecha de Ingreso: abril-2001
Ubicación: sentado frente a un pc prestado
Mensajes: 375
Antigüedad: 23 años
Puntos: 2
Validacion de Check Box con indices...

Hola
comento mi problema.
Cargo una lista de check box desde PHP con el nombre

Código PHP:
<input type="checkbox" name="g[1]" value="Opcion1"Opcion1<br />
<
input type="checkbox" name="g[2]" value="Opcion2"Opcion2<br />
<
input type="checkbox" name="g[3]" value="Opcion3"Opcion3<br /> 
ahora lo que necesito hacer es validar si alguna de estas esta clikeada...
pero no me resulta con los [ ]

tengo la siguiente funcion y no me funciona
Código PHP:
var itemchecked false
for (var 
; ++j) { 
            if (
document.form.g[j].checked
                { 
itemchecked true
                  
break;  }
            } 
if (
itemchecked==false){
    
alert("Debe seleccionar por lo menos un grupo");
    return 
false;} 
he probado cambiando la siguiente linea pero tampoco funciona
Código PHP:
if (document.form.g+"["+[j]+"]"+.checked
gracias por su ayuda..
saludos
  #2 (permalink)  
Antiguo 24/07/2006, 15:32
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Qué tal,

javascript no acepta nombres de elementos con corchetes. Lo más sencillo que puedes hacer es agregar a cada elemento además un id sin corchetes

<input type="checkbox" name="g[1]" id="g1" value="Opcion1">

y luego acceder a él por su id

if(document.getElementById('g' + j)checked)

Un saludo
  #3 (permalink)  
Antiguo 24/07/2006, 16:31
Avatar de el_javi  
Fecha de Ingreso: marzo-2005
Ubicación: MAdrid
Mensajes: 844
Antigüedad: 19 años, 1 mes
Puntos: 10
Buenas noches.

La solución de tunait, es correcta, pero quiero hacer un inciso sobre
Cita:
javascript no acepta nombres de elementos con corchetes. Lo más sencillo que puedes hacer es agregar a cada elemento además un id sin corchetes
Si se puede hacer referencia a un elemento cuyo nombre está formado por corchetes....

Lo que hay que hacer es acceder a la colección por medio de formulario.elements[nombreDelElemento], donde nombreDelElemento, puede tener o no corchetes.

Os pongo un ejemplo a continuación:
Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<
html>
<
head>
    <
title>Validacion</title>
    <
script language="JavaScript1.2" type="text/javascript">
        function 
validarPulsados()
        {
            var 
checados false;
            var 
cantidadCheckbox 9;
            var 
objFormulario document.forms["formulario"];
            for (
contadorElementos=1;contadorElementos<cantidadCheckbox;contadorElementos++)
            {
                var 
actualName "elemento[" contadorElementos "]";
                var 
actualCheckbox objFormulario.elements[actualName];
                if (
actualCheckbox.checked == true)
                {
                    
checados true;
                    break;
                }
            }
            
            if (
checados == false)
            {
                
alert ("debe checar al menos un elemento");
            }
        }
    
</script>
</head>

<body bgcolor="#00ffff">
<center>
<form name="formulario" action="" method="post">
    <input type="Checkbox" name="elemento[1]" id="elemento1"><label for="elemento1">Elemento 1</label><br>    
    <input type="Checkbox" name="elemento[2]" id="elemento2"><label for="elemento2">Elemento 2</label><br>
    <input type="Checkbox" name="elemento[3]" id="elemento3"><label for="elemento3">Elemento 3</label><br>
    <input type="Checkbox" name="elemento[4]" id="elemento4"><label for="elemento4">Elemento 4</label><br>
    <input type="Checkbox" name="elemento[5]" id="elemento5"><label for="elemento5">Elemento 5</label><br>
    <input type="Checkbox" name="elemento[6]" id="elemento6"><label for="elemento6">Elemento 6</label><br>
    <input type="Checkbox" name="elemento[7]" id="elemento7"><label for="elemento7">Elemento 7</label><br>
    <input type="Checkbox" name="elemento[8]" id="elemento8"><label for="elemento8">Elemento 8</label><br><br>
    
    <input type="Button" value="validar pulsados" onclick="validarPulsados()">
</form>
</center>
</body>
</html> 
Solo era una puntualización.

Un saludo

  #4 (permalink)  
Antiguo 24/07/2006, 18:18
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
o tambien

Cita:
document.forms['miformulario']['campo['+1+']']
__________________
by Capitán Buscapina
.
  #5 (permalink)  
Antiguo 25/07/2006, 01:39
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Wop cierto, funciona estupendo

Thanks por la info!
  #6 (permalink)  
Antiguo 25/07/2006, 10:42
Avatar de Phobos  
Fecha de Ingreso: abril-2001
Ubicación: sentado frente a un pc prestado
Mensajes: 375
Antigüedad: 23 años
Puntos: 2
Genial gracias...
pero ahora tengo otra duda..
el problem es que son varios ckecklist... (dinamicos.)
y como el formato del nombre es name="g[x]"

como hago para saber cuantos check son para colocarle limite al for???

Saludos.
  #7 (permalink)  
Antiguo 25/07/2006, 10:49
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 10 meses
Puntos: 0
document.forms.g.length si no me equivoco te daria el total de campos xq creo q se comporta como un array.

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #8 (permalink)  
Antiguo 26/07/2006, 07:35
Avatar de Phobos  
Fecha de Ingreso: abril-2001
Ubicación: sentado frente a un pc prestado
Mensajes: 375
Antigüedad: 23 años
Puntos: 2
djreficul no funciono.... me dice que no encuentra el objeto.... al parecer no lo toma como un array...

Saludos.
  #9 (permalink)  
Antiguo 26/07/2006, 08:15
Avatar de Phobos  
Fecha de Ingreso: abril-2001
Ubicación: sentado frente a un pc prestado
Mensajes: 375
Antigüedad: 23 años
Puntos: 2
Ok...
solucione el problema...
lo que hago reviso primero todos los elementos del formulario... pregunto si concuerdan con mis check y luego los reviso si estan cliqueados...
les dejo la funcion a ver si se puede mejorar...

Código PHP:
var a=document.form.length;
var 
b=0;
for (
x=0;x<a;x++)
{
    if(
document.forms['form']['g['+x+']'] )
    {
        if (
document.forms['form']['g['+x+']'].checked==true )
        {
b=1;}
    }
}
if (
b==0){
    
alert("A lo menos debe seleccionar un Chek");
    return 
false;} 

Saludos
  #10 (permalink)  
Antiguo 26/07/2006, 08:54
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
creo que esta bien , como una forma de simplificarla un poquito (que no es necesario si no querés) se podría:

Cita:
var a=document.form.length;
var b=0;
for (x=0;x<a;x++)
{
if(document.forms['form']['g['+x+']'] )
{
if (document.forms['form']['g['+x+']'].checked==true )
{alert("A lo menos debe seleccionar un Chek");
break;}
}
}
saludos
__________________
by Capitán Buscapina
.
  #11 (permalink)  
Antiguo 03/03/2011, 11:27
 
Fecha de Ingreso: febrero-2011
Mensajes: 2
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Validacion de Check Box con indices...

hola antes que nada me sirvio mucho este caso el problema en mi caso es que yo lo aplico para validar "si se selecciono el check por ende debe escribir una cantidad en su respectiva caja de texto" sinembargo si aplico esa funcion de validar en la misma pag si me fuenciona de diez pero yo lo que hice es hacer un script (.js) y mandarlo llamar en la pag cuando le de click al boton de enviar el cual llama a la funcion con return valida (this) y ese parametro lo recogo con la letra F en la funcion es alli donde tengo el problema porq ya no reconoce las intrucciones ya intente con todos los casos expuesto y no anda


Código HTML:
Ver original
  1. <FORM name="form1" ACTION="Insert.php" METHOD="POST"  onsubmit="return valida(this);">
  2.  
  3. <B>Nombrel:</B><input name="nom_cok" type="text" />
  4.  
  5. <table width="280" border="0">
  6.   <tr>
  7.     <td width="135"><b>Pieza</b></td>
  8.     <td width="135"><b>Cantidad</b></td>
  9.   </tr>
  10.   <tr>
  11.     <td><input type="checkbox" name="cat_al[1]" value="1" id=al1 /></td>
  12.     <td><input type="text" name="can_oz_al[1]"  size="5" id=oz1  value="0.0" onClick='this.value="";'/ > //limpia el valor al darle click
  13.     </td>
  14.   </tr>
  15.   <tr>
  16.     <td><input type="checkbox" name="cat_al[2]" value="2" id=al2 />
  17.     </td>
  18.     <td><input name="can_oz_al[2]" type="text" size="5" value="0.0" id=oz2 onClick='this.value="";'/>
  19.     </td>
  20.   </tr>
  21.   <tr>
  22.     <td><input type="checkbox" name="cat_al[3]" value="3" id=al3/>
  23.     </td>
  24.     <td><input name="can_oz_al[3]" type="text" size="5" value="0.0" id=oz3 onClick='this.value="";'/>
  25.     </td>
  26.   </tr>
  27.   <tr>
  28.     <Td><input type="checkbox" name="cat_al[4]" value="4" id=al4 onClick='this.value="";'/>
  29.     </Td>
  30.     <Td><input name="can_oz_al[4]" type="text" size="5" value="0.0" id=oz4 onClick='this.value="";'/>
  31.     </Td>
  32.     </tr>
  33. <input type="submit" value="Enviar" />
  34.   <br />
  35.     <br />
  36. </p>
  37. </FORM>

Código PHP:
Ver original
  1. <script language="JavaScript">
  2.  
  3. function vacio(q) {  
  4.          for ( i = 0; i < q.length; i++ ) {  
  5.                  if ( q.charAt(i) != " " ) {  
  6.                         return true;  
  7.                 }  
  8.          }  
  9.          return false;  
  10.  }
  11.  
  12.  function ComprobarNumero(k) {
  13.     var i;
  14.     for (i = 0; i < k.length; i++)           
  15.     {
  16.       if (k.charCodeAt(i) < 48 || k.charCodeAt(i) > 57 || k.k.charCodeAt(i) != 46)
  17.         {
  18.             return false;
  19.         }
  20.    
  21.      }
  22.      return true;
  23. }
  24.  
  25. function  valida(f){
  26.             alert("Etro a la funcion");
  27.            
  28.             var a=document.form0.length;
  29.             var s=0;
  30.             var c=0;
  31.             var n=0;
  32.             var checados = false;
  33.             var cantidadCheckbox = 5;
  34.             var objFormulario = document.forms["form0"];
  35.             for (contadorElementos=1;contadorElementos<cantidadCheckbox;contadorElementos++)
  36.             {
  37.                 var actualName = "cat_al[" + contadorElementos + "]";
  38.                 var actualCheckbox = objFormulario.elements[actualName];
  39.                 var actualNametxt = "can_oz_al[" + contadorElementos + "]";
  40.                 var actualtxt = objFormulario.elements[actualNametxt];
  41.                
  42.                 if (actualCheckbox.checked == true)
  43.                 {
  44.                     c++;
  45.                     if(vacio(document.forms["form0"].elements["can_oz_al[" + contadorElementos + "]"].value) == true ){
  46.                         s++;
  47.                     }else {
  48.                             alert("caja vacia");
  49.                             return false;
  50.                             }
  51.                     if(ComprobarNumero(document.forms["form0"].elements["can_oz_al[" + contadorElementos + "]"].value) == true ){
  52.                     n++;
  53.                     }else{
  54.                         alert("Escirba Numeros solamente en las cantidad");
  55.                         return false;
  56.                         }
  57.                 }
  58.             }
  59.                 alert ("cantidad de cajas texto ="+ s);
  60.                 alert ("cantidad de cajas  check="+ c);
  61.                 alert ("contador de funcion numero =" + n);
  62.             alert("OK2");  
  63.             return true;    
  64.             }
  65. </script>

Esto lo hace a la perfeccion cuando se encuentra en la misma pag pero si lo llamo como funcion .js ya tengo problemas solo valida el del campo de nombre y de allo se salta todo
  #12 (permalink)  
Antiguo 03/03/2011, 11:30
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Respuesta: Validacion de Check Box con indices...

Hola roulette_103

Te recuerdo el aviso que había al final de este tema y que parece que no has leído o no le has hecho ni caso.



Tema cerrado.
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 15:08.