2011-05-01 14 views

Odpowiedz

15

Trzeba tylko sprawdzić właściwość zaznaczone tablicy

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

Tutaj length to demo: http://jsfiddle.net/LUnN5/

+0

+1 (w 11 godzin, gdy mój głos WPR jest reset) dla uzyskania ' : sprawdziłem, zanim pomyślałem o tym. – alex

+0

Zamiast ponownie skanować DOM i tworzenie kolejnych obiektów jQuery za pomocą '$ ('. Check: checked'). Length' można po prostu przetestować' this.checked'. – Jason

+0

@Jason Musisz zeskanować DOM, ponieważ pytanie pyta, czy zaznaczone są "jakiekolwiek" znaczniki wyboru. Więc nawet jeśli kliknięty przycisk zostanie usunięty, mogą być inne, które są sprawdzane. – JohnP

1

Uzyskaj odniesienie do wszystkich zaznaczonych pól wyboru, a następnie do zdarzenia change(), ustaw właściwość disabled na podstawie, jeśli zaznaczono jakiekolwiek pola wyboru.

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"); 
Powiązane problemy