Foros del Web » Programando para Internet » Javascript »

Ayuda con seleccionar todos los checkbox o invertir la seleccion

Estas en el tema de Ayuda con seleccionar todos los checkbox o invertir la seleccion en el foro de Javascript en Foros del Web. Hola. Necesito que me ayudeis con el siguiente codigo, por mas que lo he intentado, no lo doy realizado. Os explico brevemente lo que quiero ...
  #1 (permalink)  
Antiguo 05/11/2004, 19:00
 
Fecha de Ingreso: mayo-2004
Mensajes: 180
Antigüedad: 20 años
Puntos: 2
Ayuda con seleccionar todos los checkbox o invertir la seleccion

Hola. Necesito que me ayudeis con el siguiente codigo, por mas que lo he intentado, no lo doy realizado. Os explico brevemente lo que quiero hacer. Tengo un script donde consulto unos registros de la bd, y a partir de ahi genero una serie de botones checkbox, lo cuales puedo marcar o no marcar. Si estan marcados, alamaceno en ese campo value el correo electronico. El caso es que a partir de esos valores de los campos checkbox (siempre seran de la manera checkbox1, checkbox2...checkbox50 ...etc), envio correos a esos. Lo que quiero hacer es poner un par de botones, que me permita, o invertir la seleccion, o seleccionarlos todos. no se si esto sera posible, o si sabies alguna manera mas o menos decente de hacerlo. Os pongo el codigo de lo que he programado , solo faltaria añadirle esas dos funcioanlidades pero no doy. Alguien me echa una mano¿? Gracias

Codigo
Código PHP:
<HTML>
<HEAD>
<TITLE>Borrar1.php</TITLE>
</HEAD>
<BODY>
<div align="center">
<h1>Borrar un registro</h1>
<br>

<?
}


 
mysql_select_db($basedatos$bd);

echo 
'<FORM METHOD="GET" ACTION="borra3.php">Seleccione el usuario que desea dar de baja<br>';

//Creamos la sentencia SQL y la ejecutamos
$sSQL="Select nombre,apellidos,dni,email from usuarios order by apellidos";
$result=mysql_db_query("lab33",$sSQL);



//Mostramos los registros en forma de menú desplegable
$i=0;
echo 
'<table>';
while (
$row=mysql_fetch_array($result)){
 echo 
"<p></p>";
 echo 
'<input type="checkbox" name="checkbox'.$i.'" value="'.$row[3].'">';
 echo 
$row[2].": ".$row[1].", ".$row[0];


 
$i=$i+1;
}
 echo  
'<input type="hidden" name="numCampos" value="'.$i.'">' ;
 echo  
'<input type="checkbox" name="pepe" value="hola que tal">';
?>

</table>

<br>
<INPUT TYPE="SUBMIT" value="Borrar">
</FORM>
</div>

</BODY>
</HTML>
  #2 (permalink)  
Antiguo 06/11/2004, 12:51
 
Fecha de Ingreso: octubre-2004
Ubicación: España
Mensajes: 894
Antigüedad: 19 años, 6 meses
Puntos: 3
Hola, mickeyy
Asumiendo que se vayan a llamar checkbox1, 2, etc lo puedes hacer así:

Código HTML:
<input type="button" value="Marcar todos" onClick="marcaTodos(this.form)">
 &nbsp; 
<input type="button" value="Invertir" onClick="invierte(this.form)"> 
Código:
function marcaTodos(formu) {
	for (i=1; i<formu.length; i++) {
		with (formu.elements[i]) {
			if ( name.indexOf('checkbox')==0 ) { checked = true }
		}
	}
}
function invierte(formu) {
	for (i=0; i<formu.length; i++) {
		with (formu.elements[i]) {
			if ( name.indexOf('checkbox')==0 ) { checked = !checked }
		}
	}
}
He intentado hacerlo mejor, usando la propiedad "type=checkbox" pero falla siempre en Mozilla y alguna vez en Explorer. Así que respetando los nombres, esta solución es buena.
  #3 (permalink)  
Antiguo 06/11/2004, 14:11
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola angsanchez.

La propiedat type funciona bien en Mozilla En tu mensaje hay un error, aunque supongo que ha sido un fallo al teclear. Imagino que quieres usar algo así:

if(type=='textbox')

Saludos,
  #4 (permalink)  
Antiguo 07/11/2004, 07:39
 
Fecha de Ingreso: octubre-2004
Ubicación: España
Mensajes: 894
Antigüedad: 19 años, 6 meses
Puntos: 3
Sí, JavierB, era con dos signos igual. Pero en Firefox (dije Mozilla por error) fallaba la lectura del valor 'type'. ¡Vaya! hoy funciona bien, no sé que pasó ayer pero ¡¡convertía en checkboxes los botones!!
(además, veo que en marcaTodos puse
Código:
for (i=1;
y debería ser
Código:
for (i=0;
; mickeyy, corrígelo)

La versión más elegante sería, pues , así:
Código HTML:
<html>
<head>
<script language="javascript" type="text/javascript">
function marcaTodos(formu) {
	for (i=0; i<formu.length; i++) {
		with (formu.elements[i]) {
			if ( type == 'checkbox' ) { checked = true }
		}
	}
}

function invierte(formu) {
	for (i=0; i<formu.length; i++) {
		with (formu.elements[i]) {
			if ( type == 'checkbox' ) { checked = !checked }
		}
	}
}
</script>
</head>

<body>
<form>
<input type="checkbox" name="checkbox1" checked>op-1
<br><input type="checkbox" name="checkbox2">op-2
<br><input type="checkbox" name="checkbox3">op-3
<br><input type="checkbox" name="checkbox4" checked>op-4
<br><br>
<input type="button" value="Marcar todos" onClick="marcaTodos(this.form)">
 &nbsp; 
<input type="button" value="Invertir" onClick="invierte(this.form)">
</form>
</body>
</html> 
Con lo cual ya no depende del nombre del control, sólo de que sea un checkbox.

¡Suerte!
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 17:54.