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ę?
jQuery do sprawdzenia, czy jest zaznaczone? Naprawdę?
if(!this.checked) {
Nie używaj bazooki do pracy brzytwą.
źródło
$(this)[0].checked
.checked
tam, gdzie mają.is('checked')
, nie będzie działać samo.$(document).ready(function() { $("#check1").click(function() { var checked = $(this).is(':checked'); if (checked) { alert('checked'); } else { alert('unchecked'); } }); });
źródło
<script type="text/javascript"> if(jQuery('input[id=input_id]').is(':checked')){ // Your Statment }else{ // Your Statment } OR if(jQuery('input[name=input_name]').is(':checked')){ // Your Statment }else{ // Your Statment } </script>
Kod pobrany stąd: http://chandreshrana.blogspot.in/2015/10/how-to-check-if-checkbox-is-checked-or.html
źródło
Sprawdź niektóre odpowiedzi na to pytanie - myślę, że może dotyczyć Twojego:
jak uruchomić funkcję kliknięcia po domyślnym zachowaniu elementu
Myślę, że masz niespójność w implementacji
onclick
funkcji w przeglądarce . Niektórzy wybierają przełączanie pola wyboru przed uruchomieniem zdarzenia, a niektórzy po.źródło
Odpowiedź już opublikowana. Ale możemy również użyć jquery w ten sposób
próbny
$(function(){ $('#check1').click(function() { if($('#check1').attr('checked')) alert('checked'); else alert('unchecked'); }); $('#check2').click(function() { if(!$('#check2').attr('checked')) alert('unchecked'); else alert('checked'); }); });
źródło
Zrób to w ten sposób
if (typeof $(this).attr("checked") == "undefined" ) // To check if checkbox is checked if( $(this).attr("checked")=="checked")
źródło
this.checked
. Pierwsza liniatypeof
tam nie potrzebuje (nigdy nie podniesieReferencError
). Powinieneś także używaćprop()
zamiastattr()
, co zwróci wartość logiczną, dzięki czemu drugi również będzie zbędny.