Foros del Web » Programando para Internet » Javascript »

Desactivar Todos!

Estas en el tema de Desactivar Todos! en el foro de Javascript en Foros del Web. Saludos Amig@s!! Me gustaria saber como puedo hacer para que al activar un checkbox se desactiven todos los demas, ejm: tengo 4 checkboxes, al activar ...
  #1 (permalink)  
Antiguo 21/06/2007, 09:34
Avatar de messer  
Fecha de Ingreso: julio-2004
Mensajes: 467
Antigüedad: 19 años, 10 meses
Puntos: 5
Pregunta Desactivar Todos!

Saludos Amig@s!!
Me gustaria saber como puedo hacer para que al activar un checkbox se desactiven todos los demas, ejm:

tengo 4 checkboxes, al activar 1 de ellos (cualquiera) el resto pase su estado a disabled, y de igual modo al desactivarlo se habiliten todos de nuevo...

Sera que me pueden ayudar??

se me ocurrio algo como esto:

function intercambia(tr){
var nam=tr.name
for(i=0; i=11; i++){
if(hab[i]==nam){
document.formulario.hab[i].disabled=false;
}
}


Pero de ahi en adelante, me pierdo, ya que no conozco tanto de javascript..

Espero por sus consejos // Gracias!
__________________
<script type="text/messerScript"><!--
window.onload=function(){ loadMesserRules(this.href) }
--></script>
  #2 (permalink)  
Antiguo 21/06/2007, 09:59
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 3 meses
Puntos: 772
Re: Desactivar Todos!

Hola messer

A ver si te sirve este ejemplillo:

Código PHP:
<html>
<
head>
<
script type="text/javascript">
function 
activa(obj) {
  for (
i=0ele obj.form.elements[i]; i++)
    if (
ele != obj)
      
ele.disabled obj.checked;
}
</script>
</head>
<body>
<form>
<input type="checkbox" onclick = "activa(this)" />
<input type="checkbox" onclick = "activa(this)" />
<input type="checkbox" onclick = "activa(this)" />
</form>
</body>
</html> 
Saludos,
  #3 (permalink)  
Antiguo 21/06/2007, 09:59
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Re: Desactivar Todos!

Hola:

Prueba esto:

Código:
<html>
<head>
<title>
	prueba
</title>
<script type="text/javascript">
function marcando(c) {
estado = c.checked;
for (i = 0, todos = c.form[c.name], total = todos.length; i < total; i ++)
  todos[i].disabled = (todos[i] == c) ? false : estado;
}
</script>
</head>
<body >
<form>
<input type="checkbox" name="prueba" value="2" onclick="marcando(this)" />
<input type="checkbox" name="prueba" value="2" onclick="marcando(this)" />
<input type="checkbox" name="prueba" value="2" onclick="marcando(this)" />
<input type="checkbox" name="prueba" value="2" onclick="marcando(this)" />
<input type="checkbox" name="prueba" value="2" onclick="marcando(this)" />
</form>
</body>
</html>
Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 21/06/2007, 10:03
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 3 meses
Puntos: 772
Re: Desactivar Todos!

Hola caricatos. ¡Cuanto tiempo sin chocar!

Saludos,
  #5 (permalink)  
Antiguo 21/06/2007, 10:04
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Re: Desactivar Todos!

Hola:

¡Que raro que se me adelantara JavierB!

Es que no vi el semáforo

La diferencia que veo es que el código de JavierB (¡Hola !) deshabilita todo, y mi código deshabilita los controles con el mismo nombre... son matices...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #6 (permalink)  
Antiguo 21/06/2007, 10:17
Avatar de messer  
Fecha de Ingreso: julio-2004
Mensajes: 467
Antigüedad: 19 años, 10 meses
Puntos: 5
Re: Desactivar Todos!

Muchas Gracias a los 2, pero hay un detalle, Uds. colocan los checkboxes con el mismo nombre, mis checkboxes tienen distintos nombres.. de todos modos seguire probando a ver.. Saludos!!
__________________
<script type="text/messerScript"><!--
window.onload=function(){ loadMesserRules(this.href) }
--></script>
  #7 (permalink)  
Antiguo 21/06/2007, 10:22
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 3 meses
Puntos: 772
Re: Desactivar Todos!

Hola de nuevo.

Puedes meter los checkbox que quieres manejar dentro de un div:

Código PHP:
<html>
<
head>
<
script type="text/javascript">
function 
activa(obj) {
  
document.getElementById('chk');
  for (
i=0ele d.getElementsByTagName('input')[i]; i++)
    if (
ele != obj)
      
ele.disabled obj.checked;
}
</script>
</head>
<body>
<form>
<div id="chk">
<input type="checkbox" name="c1" onclick = "activa(this)" />
<input type="checkbox" name="d2" onclick = "activa(this)" />
<input type="checkbox" name="f3" onclick = "activa(this)" />
</div>
</form>
</body>
</html> 
Saludos,

P.D. ¿chocaremos, no chocaremos...?
  #8 (permalink)  
Antiguo 21/06/2007, 10:29
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Re: Desactivar Todos!

Hola:

Para distintos nombres te recomiendo que los agrupes (tal vez en un fieldset)

Código:
<html>
<head>
<title>
	pruebas
</title>
<script type="text/javascript">
function marcando(c) {
estado = c.checked;
for (i = 0, todos = c.parentNode.childNodes, total = todos.length; i < total; i ++)
if (todos[i].form == c.form)
  todos[i].disabled = (todos[i] == c) ? false : estado;
}
</script>
</head>
<body >
<form>
<fieldset><legend>grupo</legend>
<input type="checkbox" name="prueba1" value="2" onclick="marcando(this)" />
<input type="checkbox" name="prueba2" value="2" onclick="marcando(this)" />
<input type="checkbox" name="prueba3" value="2" onclick="marcando(this)" />
<input type="checkbox" name="prueba4" value="2" onclick="marcando(this)" />
<input type="checkbox" name="prueba5" value="2" onclick="marcando(this)" />
</fieldset>
<input type="checkbox" name="prueba7" value="2" onclick="marcando(this)" />
</form>
</body>
</html>
Saludos

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

Última edición por caricatos; 21/06/2007 a las 10:30 Razón: ¿Chocamos?
  #9 (permalink)  
Antiguo 21/06/2007, 15:06
Avatar de messer  
Fecha de Ingreso: julio-2004
Mensajes: 467
Antigüedad: 19 años, 10 meses
Puntos: 5
Re: Desactivar Todos!

Bien casi ni he tenido tiempo, hare un break para chequear sus ejemplos con calma, pero los probe y funcionan los 2..

Gracias por sus respuestas, Saludos!!
__________________
<script type="text/messerScript"><!--
window.onload=function(){ loadMesserRules(this.href) }
--></script>
  #10 (permalink)  
Antiguo 22/06/2007, 00:12
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Re: Desactivar Todos!

Hola:

La verdad es que poner una serie de checkboxes con distinto nombre no me parece lógico... lo normal es que tengan el mismo nombre y distinto value, pero tu sabrás como haces tus páginas (sobre todo, en casos como el que planteas, donde hay una evidente dependencia...)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #11 (permalink)  
Antiguo 23/06/2007, 11:50
Avatar de messer  
Fecha de Ingreso: julio-2004
Mensajes: 467
Antigüedad: 19 años, 10 meses
Puntos: 5
Re: Desactivar Todos!

Les comento, probe los 2 scripts; el de JavierB funciona pero deshabilita todos los elementos input, entonces tambien los textfield, lo cual no me conviene. Por otro lado el de caricatos funciona unicamente cuando estan exlusivamente dentro del fieldset; si coloco los checkboxes dentro de una tabla aun estando dentro del fieldset, deja de funcionar..

Creo que lo mejor es hacerlo como comentan al principio, todos con un mismo nombre y distintos valores, ya que tengo unos textfields que dependen del valor de los checkboxes; uno de "subtotal", uno de "descuento" y otro de "total"..

Saludos!
__________________
<script type="text/messerScript"><!--
window.onload=function(){ loadMesserRules(this.href) }
--></script>
  #12 (permalink)  
Antiguo 23/06/2007, 14:54
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 19 años, 3 meses
Puntos: 9
Re: Desactivar Todos!

hola ,mira aqui hay una funcion que hace eso...
  #13 (permalink)  
Antiguo 25/06/2007, 06:45
Avatar de messer  
Fecha de Ingreso: julio-2004
Mensajes: 467
Antigüedad: 19 años, 10 meses
Puntos: 5
Re: Desactivar Todos!

Estimado programeitor, el script que aparece en el link lo que hace es activar y desactivar, es logico que se confunda ya que debi colocar en el nombre del post "deshabilitar todos" y no "desactivar todos" ya que lo que se esta manejando es deshabilitar algunos campos y otros no..
De todos modos gracias por tu aporte.

Saludos!!
__________________
<script type="text/messerScript"><!--
window.onload=function(){ loadMesserRules(this.href) }
--></script>
  #14 (permalink)  
Antiguo 25/06/2007, 09:49
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Re: Desactivar Todos!

Cita:
Iniciado por messer Ver Mensaje
Les comento, probe los 2 scripts; el de JavierB funciona pero deshabilita todos los elementos input, entonces tambien los textfield, lo cual no me conviene. Por otro lado el de caricatos funciona unicamente cuando estan exlusivamente dentro del fieldset; si coloco los checkboxes dentro de una tabla aun estando dentro del fieldset, deja de funcionar..

Creo que lo mejor es hacerlo como comentan al principio, todos con un mismo nombre y distintos valores, ya que tengo unos textfields que dependen del valor de los checkboxes; uno de "subtotal", uno de "descuento" y otro de "total"..

Saludos!
Hola:

La verdad es que nuestras respuestas suelen ser orientativas, y los interesados deben poner algo de su parte, pero la decisión que estás tomando es en mi opinión la mejor.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
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 02:41.