2009-11-12 21 views
13

tengo 5 casillas en cada fila. El primero es 'TODO'. Estoy tratando de ver si alguno de los otros está desactivado. Por lo tanto, si alguien hace clic en casilla de verificación 'ALL', que necesito para asegurarse de que los discapacitados no se comprueban. Esto es lo que tengo:jQuery tema casilla - no comprobar si está desactivado

("input[name^=all_]").each(function() { 
var input = $(this); 
var name = input.attr('name');  
var num = /\d+$/.exec(name)[0]; 
$(this).click(function() { 

if ($('"#G"+num').attr('disabled',false)) {    
$("#G"+num).attr('checked', $("#all_"+num).is(':checked')); 
} 
if ($('"#E"+num').attr('disabled',false)) {   
$("#E"+num).attr('checked', $("#all_"+num).is(':checked')); 
} 
if ($('"#W"+num').attr('disabled',false)) { 
$("#W"+num).attr('checked', $("#all_"+num).is(':checked')); 
} 
if ($('"#S"+num').attr('disabled',false)) { 
$("#S"+num).attr('checked', $("#all_"+num).is(':checked')); 
} 
}); 

});

La cosa es, los discapacitados todavía se comprueban una vez que haga clic en 'ALL'. ¿Qué estoy haciendo mal? gracias por adelantado.

+0

cosas interesantes sucedieron if (! $ ("# G" + num) .attr ('desactivado', 'desactivado')) {\t \t \t \t $ ("# G" + num) .attr ('checked', $ ("# all _" + num).está chequeado')); \t} \t if (! $ ("# E" + num) .attr ('desactivado', 'desactivado')) {\t \t \t \t $ ("# E" + num) .attr ('marcado' , $ ("# all _" + num) .is (': checked')); \t if (! $ ("# W" + num) .attr ('disabled', 'disabled')) { \t $ ("# W" + num) .attr ('checked', $ ("#all _" + num) .is (': checked')); \t if ($ ('"# S" + num'). Attr ('disabled', false)) { \t $ ("# S" + num) .attr ('checked', $ (" #all _ "+ num) .is (': checked')); \t} \t}); no marca la casilla deshabilitada, pero la casilla activada se desactiva – CFNinja

Respuesta

15

esto funciona:

if (!$("#G"+num).is(':disabled')) {    
$("#G"+num).attr('checked', $("#all_"+num).is(':checked')); 
} 
if (!$("#E"+num).is(':disabled')) {    
$("#E"+num).attr('checked', $("#all_"+num).is(':checked')); 
} 
if (!$("#W"+num).is(':disabled')) { 
$("#W"+num).attr('checked', $("#all_"+num).is(':checked')); 
} 
if (!$("#S"+num).is(':disabled')) { 
$("#S"+num).attr('checked', $("#all_"+num).is(':checked')); 
} 
}); 
5

Uso jQuery ": desactivado" filtro en lugar de acceder al atributo 'discapacitados'.

+0

de esta manera? if (! $ ("# S" + num) .filter (': disabled')) esto no funciona, los botones activos no se verifican. – CFNinja

1

podría ser mejor interfaz de usuario para utilizar un botón de activación a "comprobar todos/Deseleccionar todos" en lugar de una casilla de verificación de "ALL". Así que 1 botón + 4 casillas de verificación en lugar de 5 casillas de verificación. Entonces no tendrá que meterse con la desactivación.

+0

La página se está creando a partir de una salida db. Cada registro tiene diferentes opciones disponibles, por lo que tuve que deshabilitar las casillas de verificación para indicar que esa opción no está disponible para ese registro en particular. No estoy seguro, si la opción de alternar funcionaría en mi situación. – CFNinja

3

umm i probablemente hacer esto:


    $('input[name=all]').click(function(){ 
     var classn = $(this).attr('class'); 
     $('.'+classn+':not(:disabled)').attr('checked', $(this).is(':checked')); 
    }); 

acaba de asignar una clase de uniforme para cada fila row_one decir, row_two y así sucesivamente.

2

Prueba esto:

var all_checks = 0; 

$(document).ready(function(){ 
    $("#all").click(function(){ 
    $('input:checkbox:not(:disabled)').attr("checked",!(all_checks==1)); 
     if (all_checks == 0){all_checks=1;} else {all_checks = 0;}; 
    }); 
}); 

Dónde #all es el ID de la casilla de verificación maestra (que dice Activar/desactivar todos ...

Esperamos que esto ayude a alguien Richard Reverón

1

Me! Tengo el mismo problema, pero logré resolverlo & Creo que la solución está bien. Aquí:

$("INPUT[@name="+children+"][type='checkbox']").attr('checked', $(parent).is(':checked')); 
$("INPUT[@name="+children+"][type='checkbox'][disabled]").attr('checked', false); 

creo que es fácil de entender. No hay necesidad de explicar con más detalle, supongo: P pero por favor no dude en preguntar :)

10

Para cheque todos excepto discapacitados

$('input:checkbox:not(:disabled)').attr('checked','checked'); 

Para desmarque todos excepto discapacitados

$('input:checkbox:not(:disabled)').removeAttr('checked'); 
1

sé que esto es una entrada antigua, pero no tenía otra toma similares en él donde quería marcar todas las casillas de verificación que no eran discapacitados. Sin embargo, también tengo algunas otras casillas de verificación que no quiero afectados por esto, así que necesitaba para apuntar sólo el <div> que los contenía:

$(function() { 
    $('#checkAll').click(function() { 
     $('#completed_modules').find(':checkbox:not(:disabled)').attr('checked', this.checked); 
    }); 
}); 

funciona como un encanto. Disfrútalo, espero que alguien lo encuentre útil.

+0

agradable, gracias por compartir. – CFNinja

Cuestiones relacionadas