Foros del Web » Programando para Internet » Javascript »

checked a todos los checkbox

Estas en el tema de checked a todos los checkbox en el foro de Javascript en Foros del Web. Hola a todos, espero se encuentren bien Tengo muchos checkbox y quisiera saber si hay alguna manera de ponerlos en checked a todos con una ...
  #1 (permalink)  
Antiguo 10/02/2009, 14:53
 
Fecha de Ingreso: enero-2008
Mensajes: 366
Antigüedad: 17 años
Puntos: 3
checked a todos los checkbox

Hola a todos, espero se encuentren bien


Tengo muchos checkbox y quisiera saber si hay alguna manera de ponerlos en checked a todos con una sola instrucción.

Por ejemplo para resetear la página es document.mi_formulario.reset();

Habrá algo como document.mi_formulario.checked.all o algo asi.

espero me puedan ayudar, gracias
  #2 (permalink)  
Antiguo 10/02/2009, 15:21
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: checked a todos los checkbox

Hola Betina232022

Para marcar todos los checkbox usa javascript, aqui te dejo un codigo

JavaScript
Código:
function marcaAllCheckBox(objForm)
{
	
   for (i=0;i<document.forms[objForm].elements.length;i++)
      if(document.forms[objForm].elements[i].type == "checkbox")
         document.forms[objForm].elements[i].checked=true
 
}
Luego haces un boton en el formulario que invoque a esa funcion y listo

HTML

Código:
<input type="button" name="marcar" value="Marca" onclick="javascript:marcaAllCheckBox(this.form.name);">
Espero te sirva

Saludos
  #3 (permalink)  
Antiguo 10/02/2009, 15:37
 
Fecha de Ingreso: enero-2008
Mensajes: 366
Antigüedad: 17 años
Puntos: 3
Respuesta: checked a todos los checkbox

Hola, gracias por responder

Ya puse una función igual a esa pero se tarda mucho en seleccionarlos todos, tengo más de 1000 checkbox.

tenia la esperanza de que hubiera una instrucción que seleccionara todos sin hacer ciclo.


Si la hay?

gracias otra vez
  #4 (permalink)  
Antiguo 10/02/2009, 15:47
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 19 años, 10 meses
Puntos: 9
Respuesta: checked a todos los checkbox

De entrada ponlos chequeados:

Código:
 
<input type="checkbox" checked>
  #5 (permalink)  
Antiguo 10/02/2009, 16:03
 
Fecha de Ingreso: enero-2008
Mensajes: 366
Antigüedad: 17 años
Puntos: 3
Respuesta: checked a todos los checkbox

los pongo checked a todos desde el principio.

para quitarles la selección a todos tengo que hacer ciclo?
  #6 (permalink)  
Antiguo 10/02/2009, 17:53
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 19 años, 10 meses
Puntos: 9
Respuesta: checked a todos los checkbox

pues:
- podrias recargar de nuevo la pagina sin chequearlos,PHP, document.write...
- podrias hacer el ciclo, pues no hay orden nativa para eso.
- podrias poner menos checkbox(¿para que tantos checkbox?)
- podrias realizar la funcion de los checkbox de otra forma. Sin mas datos no puedo decirte mas.

suerte,Saludos.
  #7 (permalink)  
Antiguo 10/02/2009, 19:02
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 9 meses
Puntos: 15
De acuerdo Respuesta: checked a todos los checkbox

Podrias utilizar algo de logica:
(Siempre hay alternativas para todo...)

1. Calculas el total de check en el momento de la creación de la pagina y almacenas el parametro y lo dejas en javascript.

2. Ahora haces un for que establezca check a todos desde arriba y desde abajo de la lista.

Digamos:
el total de check es 1000.
Comienzas:
i = 0;
j=total elementos;
Un for (i=1 hasta 500){
document.forms[objForm].elements[i].checked=true
document.forms[objForm].elements[j].checked=true
j=j-1;
}
Asi, logras dos trabajos en uno y tu tiempo se reduce casi a la mitad. y si aun es lento, puedes partir el grupo en cuatro, con cuatro variables y listo...
- También puedes paginar tu listado, asi el usuario no se cansa de esperar...

Un saludo.

Última edición por SPAWN3000; 10/02/2009 a las 19:16
  #8 (permalink)  
Antiguo 10/02/2009, 19:15
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 9 meses
Puntos: 15
De acuerdo Respuesta: checked a todos los checkbox

Por cierto, algo mas eficiente es asignar ID a cada check, asi tu script no se esfuerza tanto verificando etiquetas input type...

asignas un ID.
Si tu sistema trabaja PHP:
K es una variable acumulador o contador...
<?php
//Aqui tu variable K incrementable en 1
echo ('<input id=\"check'.$k.'\" type=\"checkbox\"/>');
echo ('<div>Total elementos:<span id=\"total\">'.$k.'</span></div>');
?>
De la segunda linea, por medio del ID en el span, podrás recuperar el total de elementos... y cada check tendra un id de nombre check mas el numero...asi no tendras que ir haciendo la validacion por medio del DOM, ya que es tu if uno de los agentes que vuelve lento tu sistema.

Creo que algo así...
Java + JSP
<%
out.print("<input id=\"chek"+k+"\" type...");
//Y lo mismo
%>

Espero te sea util
Luego para recorrerlos usas el for de recorrido doble, y retiras el if dejando como sentencia final
var total = document.getElementById(total).value;
j=total;
for(i=1;i<=total;i++){
document.getElementById('check'+i).checked=true;
document.getElementById('check'+j).checked=true;
j=j-1;
}//Hay que verificar si el for cumple con todos los elementos al finalizar. tal vez <= o < únicamente.
Creo que algo así...
- Recuerda que también puedes paginar tus resultados, tal como lo hacen los sistemas de correo como gmail...La paginación es muy común hoy en día.

Un saludo.

Última edición por SPAWN3000; 10/02/2009 a las 19:34
  #9 (permalink)  
Antiguo 10/02/2009, 19:36
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 9 meses
Puntos: 15
Respuesta: checked a todos los checkbox

Recuerda que puedes usar AJAX para paginas de forma dinámica...
  #10 (permalink)  
Antiguo 10/02/2009, 20:31
 
Fecha de Ingreso: diciembre-2007
Mensajes: 274
Antigüedad: 17 años
Puntos: 0
Respuesta: checked a todos los checkbox

usa un frame para mostrar los check y despues pasale un parametro para ver si esta marcado o no. Osea.

<script>
marcar=false
function marcarlos(){
if(marcar==false)
marcar=true
else
marcar=false
document.getElementById("marcar").src="checks.php? marcar="+marcar
}
</script>
<input type=button onclick="marcarlos()" value="marcar/desmarcar">
<iframe src="checks.php?marcar=false" id="marcar"></iframe>

Y en la pagina checks.php pones

Código PHP:
if($_GET["marcar"]==false)
{
/*
todos
los 
checkbox
sin 
marcar
*/
}
else
{
/*
todos 
los 
checkbox
marcados
*/

  #11 (permalink)  
Antiguo 11/02/2009, 10:20
 
Fecha de Ingreso: enero-2008
Mensajes: 366
Antigüedad: 17 años
Puntos: 3
Respuesta: checked a todos los checkbox

Gracias a todos por contestar, partí a la mitad el número de checkbox y aun asi se tarda, yo creo que asi lo voy a dejar solo voy a mostrarle al usuario el cursor con el relojito.


gracias nuevamente y que tengan un bonito día
  #12 (permalink)  
Antiguo 11/02/2009, 10:50
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
Respuesta: checked a todos los checkbox

Hola:

Con tantos datos, la opción del relojito creo que es una buena opción... de las respuestas que te han dado, me quedo con la primera, y podría mejorarse sin el condicionante, pero tendríamos una discusión algo más extensa...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo

Última edición por caricatos; 11/02/2009 a las 10:51 Razón: ortografía
  #13 (permalink)  
Antiguo 11/02/2009, 16:27
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 9 meses
Puntos: 15
Respuesta: checked a todos los checkbox

Yo lo que proponía era esto...

Código:
<html>
<head>
<script>
function marcaAllCheckBox(objForm){
//Es mejor separar la variable y no estarla analizando en el for, aumenta el rendimiento
var miform=document.forms[objForm].elements.length;
k = miform-1;
miform = Math.floor(miform/2);
	for (i=0;i<=miform;i++){
		if(document.forms[objForm].elements[i].type=="checkbox"){
			document.forms[objForm].elements[i].checked=true;
		}
		if(document.forms[objForm].elements[k].type=="checkbox"){
			document.forms[objForm].elements[k].checked=true;
		}
		alert('Posicion:'+k);
		k=k-1;
	}
}
</script>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
<input type="checkbox" name="todos" onclick="marcaAllCheckBox('form1')"/><br/>
<input type="checkbox" name="algo1"/><br/>
<input type="checkbox" name="algo2"/><br/>
<input type="checkbox" name="algo3"/><br/>
<input type="checkbox" name="algo4"/><br/>
<input type="checkbox" name="algo5"/><br/>
<input type="checkbox" name="algo6"/><br/>
<input type="checkbox" name="algo7"/><br/>
<input type="checkbox" name="algo8"/><br/>
<input type="checkbox" name="algo9"/><br/>
<input type="checkbox" name="algo10"/><br/>
<input type="checkbox" name="algo11"/><br/>
<input type="checkbox" name="algo12"/><br/>
<input type="checkbox" name="algo13"/><br/>
<input type="checkbox" name="algo14"/><br/>
<input type="checkbox" name="algo15"/><br/>
<input type="checkbox" name="algo16"/><br/>
<input type="checkbox" name="algo17"/><br/>
<input type="checkbox" name="algo18"/><br/>
<input type="checkbox" name="algo19"/><br/>
<input type="checkbox" name="algo20"/><br/>
</body>
</html>
Se recorre en ambos sentidos, también sería bueno agregar id's y no estar colocando el if...
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 19:25.