Chcę sprawdzić, czy pole wyboru nie zostało właśnie odznaczone, gdy użytkownik je kliknie. Powodem tego jest to, że chcę przeprowadzić walidację, gdy użytkownik usunie zaznaczenie pola wyboru. Ponieważ przynajmniej jedno pole wyboru musi być zaznaczone. Więc jeśli odznaczy ostatnią, to automatycznie sprawdza się ponownie.
Dzięki jQuery mogę łatwo dowiedzieć się, czy zostało to sprawdzone, czy nie:
$('#check1').click(function() {
if($(this).is(':checked'))
alert('checked');
else
alert('unchecked');
});
Ale tak naprawdę chcę mieć tylko instrukcję if, która sprawdza, czy pole wyboru właśnie zostało odznaczone.
Pomyślałem więc, że mogę to zrobić za pomocą następującego kodu:
$('#check2').click(function() {
if($(this).not(':checked'))
alert('unchecked');
else
alert('checked');
});
Ale to zawsze pokaże komunikat „niezaznaczony”. Nie do końca tego się spodziewałem ...
demo: http://jsfiddle.net/tVM5H/
Więc ostatecznie potrzebuję czegoś takiego:
$('#check2').click(function() {
if($(this).not(':checked')) {
// Got unchecked, so something!!!
}
});
Ale oczywiście to nie działa. Raczej nie chcę używać pierwszego przykładu, ponieważ wtedy miałbym niepotrzebne stwierdzenie „else”, gdy potrzebuję tylko jednego stwierdzenia „if”.
Po pierwsze, czy to błąd jQuery? Bo dla mnie to nieoczekiwane zachowanie. A po drugie, czy ktoś ma pomysł na dobrą alternatywę?