2011-05-01 12 views

risposta

15

Hai solo bisogno di controllare la proprietà length dell'array controllato

$('.check').change(function() { 
    if ($('.check:checked').length) { 
     $('#sub').removeAttr('disabled'); 
    } else { 
     $('#sub').attr('disabled', 'disabled'); 
    } 
}); 

ecco la demo: http://jsfiddle.net/LUnN5/

+0

+1 (in 11 ore quando il mio berretto votazione viene resettato) per ottenere ' : controllato' prima che ci pensassi. – alex

+0

Invece di scansionare nuovamente il DOM e creare un'istanza di più oggetti jQuery, usando '$ ('. Check: checked'). Length' puoi semplicemente testare' this.checked'. – Jason

+0

@Jason È necessario eseguire la scansione del DOM perché la domanda chiede se sono spuntati "eventuali" segni di spunta. Quindi, anche se quello che è stato cliccato è deselezionato, ci possono essere altri che vengono controllati. – JohnP

1

Ottenere un riferimento a tutte le caselle di controllo in questione e quindi all'evento change(), impostare la proprietà disabled in base a se una delle caselle di controllo è selezionata o meno.

var checks = $(':checkbox.check'); 
checks.change(function() { 
    $('#bla').attr('disabled', ! checks.filter(':checked').length); 
}); 

jsFiddle.

1
$(".check").change(function() { 

    var btn = $("#bla"); 

    if ($(".check").is(":checked")) { 

     btn.removeAttr("disabled"); 

    } else { 

     btn.attr("disabled", "disabled"); 

    } 

}); 

$(".check").triggerHandler("change"); 
Problemi correlati