Foros del Web » Programando para Internet » Javascript »

cantidad de checkboxes

Estas en el tema de cantidad de checkboxes en el foro de Javascript en Foros del Web. Tengo un formulario con una serie de checkboxes, todos con el mismo name. Cuando le pido que me dé la cantidad de checkboxes que tiene ...
  #1 (permalink)  
Antiguo 20/02/2007, 11:40
 
Fecha de Ingreso: octubre-2005
Mensajes: 405
Antigüedad: 18 años, 6 meses
Puntos: 1
cantidad de checkboxes

Tengo un formulario con una serie de checkboxes, todos con el mismo name. Cuando le pido que me dé la cantidad de checkboxes que tiene ese formulario (document.formulario.nombre_checkbox.length), me da el número sólo si hay más de un checkbox. Es decir, si hay 30, la instrucción anterior devuelve 30 pero, si hay sólo 1, devuelve "undefined". ¿Alguien puede ayudar?

Como controlo esto, para que al ir solo un checkbox me diga que es uno(1) y no undefined?

<script languaje="javascript">
function contar()
{
if(Guias.guias==null)
{
alert("No existen Guías para Procesar");
return false;
}
var item=0;
//********** DEPURACION ***************
alert('Cantidad de Lineas: '+Guias.guias.length);
// cuando es 1 checkbox dice "cantidad de Lineas: undefined"
//************************************
for (x=0;x < Guias.guias.length;x++)
{
if (Guias.guias[x].checked)
{
item++;
}
}
if (item>0)
{
Guias.item.value =item;
return;
}
else
{
alert("Debe seleccionar a lo menos una Guía");
return false;
}
}
</script>



Un saludo a todos.

Última edición por [email protected]; 20/02/2007 a las 11:45
  #2 (permalink)  
Antiguo 20/02/2007, 12:55
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Re: cantidad de checkboxes

Una vez me paso igual con unos Radios Button...nunca supe por que , pero lo que hice fue crear otro campo oculto con el mismo nombre, asi, si por lo menos,si existe uno visible por obligacion, pues me aseguro que me devuelva 2 y ya no me cause problemas....no se si eso te sirva, aun que si tambien me gustaria saber por que pasa eso...Saludos!
__________________
Wow! No se que decir...
  #3 (permalink)  
Antiguo 20/02/2007, 13:32
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: cantidad de checkboxes

Siempre puedes utilizar el getElementsByName("nombre").length, sí que funcionará.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #4 (permalink)  
Antiguo 20/02/2007, 22:55
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: cantidad de checkboxes

Cita:
Iniciado por derkenuke Ver Mensaje
Siempre puedes utilizar el getElementsByName("nombre").length, sí que funcionará.
Hola:

Si bien teóricamente es correcto, en versiones antiguas de explorer (no sé si lo habrán arreglado) el array lo generaba desde el atributo id (sí, ese atributo que tenía que ser único )

Se podría hacer un array que recorriese los inputs (getElementsByTagName) y discriminar los que no sean type == "checkbox".

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 21/02/2007, 07:06
 
Fecha de Ingreso: octubre-2005
Mensajes: 405
Antigüedad: 18 años, 6 meses
Puntos: 1
Re: cantidad de checkboxes

Cita:
Iniciado por caricatos Ver Mensaje
Hola:

Si bien teóricamente es correcto, en versiones antiguas de explorer (no sé si lo habrán arreglado) el array lo generaba desde el atributo id (sí, ese atributo que tenía que ser único )

Se podría hacer un array que recorriese los inputs (getElementsByTagName) y discriminar los que no sean type == "checkbox".

Saludos
Disculpa, pero como recien comienzo en esto de la programacion (php, Javascript), no entiendo mucho lo que me comentas, ni tu ni el resto de las respuesta que he obtenido.
Te explico un poco, espero no se pierdan porque es un poco dificil de explicar:
la aplicacion que estoy realizando comprende dos ambitos uno es:
cobol grafico (Acucobol) donde yo realizo llamadas a programas htm desde cgi-bin, y en el despliego parte de las rutinas de htm.
Rutina 1: Tengo todo el encabezado del htm, con stylos, script, head, body, etc, además obtengo variables de datos del programa cobol.

<script languaje="javascript">
//valor cobol trae cantidad de guias
cantitem = %%contador%%;
function contar()
{
var item=0;
if(Guias.guias==null)
{
alert("No existen Guias para Procesar");
return false;
}
for (x=0;x < Guias.guias.length;x++)
{
if (Guias.guias[x].checked)
{
item++;
}
}
if (item>0)
{
Guias.item.value =item;
return;
}
else
{
alert("Debe seleccionar a lo menos una Guia");
return false;
}
}
</script>
<body bgcolor="#FFFFCC" text="#000000">
<form name="Guias" id="Guias" method="post" action="../../cgi-bin/desbod_i.sh" Onsubmit="return contar()">



Rutina 2: despliego datos para seleccion.

<tr>
<td width=08% id=datoguia>%%guia%%</td>
<td width=10% id=datoguia>%%rut%%</td>
<td width=38% id=datoguia>%%nombre%%</td>
<td width=28% id=datoguia>%%ciucom%%</td>
<td width=12% valign=middle align=center>
<input type="checkbox" name="guias" value="%%guia%%"> </td>
</tr>


Rutina 3: Proceso informacion con boton submit

<tr>
<td valign=middle align=center><br><br>
<input type=submit name=Submit value="Procesar">
</td>
</tr>


El problema radica principalmente en que si rescato solo 1 guia, y tengo que verificar si esta o no marcada para emision de informe; me despliega mensaje:
de undefined en la rutina:
for (x=0;x < Guias.guias.length;x++)
{
if (Guias.guias[x].checked)
{
item++;
}
}


No se si queda mas claro, espero ayuda para solucionar problema o nuevamente me expliquen lo que me señalaron con sus respuestas.
  #6 (permalink)  
Antiguo 21/02/2007, 11:04
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: cantidad de checkboxes

Hola:

Es difícil a veces comprender el código de otros, y más aún cuando se tienen "vicios"... y parece que tu solo trabajas con explorer y me ha desconcertado la variable Guias, y si es el nombre del formulario, debería estar precedido de "document."

La idea es en base al elemento padre de los checkboxes (document.forms.Guias) recorrer los tags inputs (o los elementos del form) y discriminar los que tienen el nombre guia (dentro de un formulario se puede considerar los nombres)

var f = document.forms.Guias;
for (var i = 0; i < f.elements.length; i ++)
if (f.elements[i].name = "guia") // se supone que este es un elemento a procesar...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 21/02/2007, 12:41
 
Fecha de Ingreso: octubre-2005
Mensajes: 405
Antigüedad: 18 años, 6 meses
Puntos: 1
Re: cantidad de checkboxes

Cita:
Iniciado por caricatos Ver Mensaje
Hola:

Es difícil a veces comprender el código de otros, y más aún cuando se tienen "vicios"... y parece que tu solo trabajas con explorer y me ha desconcertado la variable Guias, y si es el nombre del formulario, debería estar precedido de "document."

La idea es en base al elemento padre de los checkboxes (document.forms.Guias) recorrer los tags inputs (o los elementos del form) y discriminar los que tienen el nombre guia (dentro de un formulario se puede considerar los nombres)

var f = document.forms.Guias;
for (var i = 0; i < f.elements.length; i ++)
if (f.elements[i].name = "guia") // se supone que este es un elemento a procesar...

Saludos
Entiendo que es dificil, pero les agradezco todo intento; pues ya encontre una solucion al problema de la siguiente manera:

<script languaje="javascript">
cantitem = %%contador%%;
function contar()
{
var item=0;
if(Guias.guias==null)
{
alert("No existen Guias para Procesar");
return false;
}
for (x=0;x < Guias.guias.length;x++)
{
if (Guias.guias[x].checked)
{
item++;
}
}

if (item>0)
{
Guias.item.value =item;
return;
} else
{
if (cantitem = 1)
{
if (Guias.all["guias"].checked)
{
Guias.all["guias"].checked = true;
Guias.item.value = 1;
return;
} else
{
alert("Debe seleccionar a lo menos una Guia");
return false;
}
} else
{
alert("Debe seleccionar a lo menos una Guia");
return false;
}
}

}
</script>
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 07:18.