Foros del Web » Programando para Internet » Javascript »

Desactivar elemento cuando todos los checkbox estén desmarcados

Estas en el tema de Desactivar elemento cuando todos los checkbox estén desmarcados en el foro de Javascript en Foros del Web. Estoy generando varios checkbox mediante un for, y su name es host[] Quiero activar un JumpBox que inicialmente, al cargar la pagina he desactivado, mientras ...
  #1 (permalink)  
Antiguo 12/12/2012, 16:14
 
Fecha de Ingreso: noviembre-2007
Mensajes: 8
Antigüedad: 16 años, 5 meses
Puntos: 0
Desactivar elemento cuando todos los checkbox estén desmarcados

Estoy generando varios checkbox mediante un for, y su name es host[]
Quiero activar un JumpBox que inicialmente, al cargar la pagina he desactivado, mientras al menos uno de esos checkbox esté marcado, y desactivar el JumpBox, cuando ningún checkbox esté marcado.

Solo consigo que me funcione de un modo switch con el primer checkbox.

He probado con ejemplos de esta pagina, pero no hay manera:
http://stackoverflow.com/questions/923407/fast-way-to-validate-if-all-checkboxes-are-un-selected
  #2 (permalink)  
Antiguo 12/12/2012, 17:33
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Desactivar elemento cuando todos los checkbox estén desmarcados

tomando el mismo código, lo que has de hacer es verificar el estado de la variable "is_checked" una vez acabado o interrumpido de ciclo
Cita:
var form = document.getElementById('Form2');
var inputs = form.getElementsByTagName('input');
var is_checked = false;
for(var x = 0; x < inputs.length; x++) {
if(inputs[x].type == 'checkbox' && inputs[x].name == 'host[]') {
is_checked = inputs[x].checked;
if(is_checked) break;
}
}
if(is_checked) {
// activa el control
else {
// desactiva el control
}
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 13/12/2012, 02:34
 
Fecha de Ingreso: noviembre-2007
Mensajes: 8
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Desactivar elemento cuando todos los checkbox estén desmarcados

Gracias por responder!

El problema que tengo es que no me recorre el array de checkboxes que genero con un for.

Código PHP:
Ver original
  1. for($h=0;$h<count($hosts);$h++){
  2.    echo "<td>
  3.             <input type=checkbox name=hostbox[]
  4.                   onClick=javascript:swap_hostaction() value=".$hosts[$h].">
  5.             <label>".$hosts[$h]."</label>
  6.             </td>";


Código Javascript:
Ver original
  1. function swap_hostaction() {
  2. for (i=0; i<document.myform.elements.length; i++)
  3.       if(document.myform.elements[i].name == "hostbox[]" )
  4.          if(document.myform.elements[i].checked)
  5.           activar_hostaction();
  6.          else
  7.           desactivar_hostaction();
  8. }
  #4 (permalink)  
Antiguo 13/12/2012, 12:45
 
Fecha de Ingreso: noviembre-2007
Mensajes: 8
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Desactivar elemento cuando todos los checkbox estén desmarcados

He encontrado este otro ejemplo cuya construcción si que me funciona. Recorre todo el array de checkboxes y mantiene una variable con la condición verdadera si hay alguno marcado.

Código Javascript:
Ver original
  1. function swap_hostaction() {
  2.     var checkboxes = document.getElementsByName('hostbox[]');
  3.     var hasChecked = false;
  4.     for (var i = 0; i < checkboxes.length; i++)
  5.     {
  6.         if (checkboxes[i].checked)
  7.         {
  8.         hasChecked = true;
  9.         activar_hostaction();
  10.         break;
  11.         }
  12.     }
  13.     if (hasChecked == false)
  14.     {
  15.         desactivar_hostaction();
  16.         return false;
  17.     }
  18.     return true;
  19. }

Etiquetas: checkbox, desactivar, elemento, funcion
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 08:49.