Jak mogę sprawdzić, czy pole wyboru w tablicy pól wyboru jest zaznaczone przy użyciu identyfikatora tablicy pól wyboru?
Korzystam z następującego kodu, ale zawsze zwraca liczbę zaznaczonych pól wyboru niezależnie od identyfikatora.
function isCheckedById(id) {
alert(id);
var checked = $("input[@id=" + id + "]:checked").length;
alert(checked);
if (checked == 0) {
return false;
} else {
return true;
}
}
javascript
jquery
html
checkbox
Jake
źródło
źródło
id
są wyjątkowe!name
może (i powinien w tym przypadku) się powtórzyć, ale znajdziesz wiele dziwnych rzeczy, które się wydarzyły, jeśli powielisz toid
! = DOdpowiedzi:
Identyfikatory muszą być unikalne w twoim dokumencie, co oznacza, że nie powinieneś tego robić:
Zamiast tego upuść identyfikator, a następnie wybierz go według nazwy lub elementu zawierającego:
A teraz jQuery:
źródło
$('#checkArray :checkbox:checked').length > 0;
gdy prostsze$('#checkArray').checked
działa i jest dostępne w większej liczbie wersji?var atLeastOneIsChecked = $('input[name="chk[]"]:checked').length > 0;
Dzieje się tak, jeśli pole wyboru jest zaznaczone.
W przypadku tablicy pól wyboru o tej samej nazwie możesz uzyskać listę zaznaczonych pól poprzez:
Następnie, aby przejrzeć je i zobaczyć, co jest zaznaczone, możesz:
Aby sprawdzić, ile jest zaznaczonych, możesz:
źródło
$('#'+id).attr('checked')
odpowiednik$('#' + id).is(":checked")
IMO, ale łatwiejszy do zapamiętania..attr('checked')
. Jego zachowanie zmieniło się w jQuery 1.6. Kiedyś zwracałfalse
lubtrue
. Teraz zwracaundefined
lub"checked"
..is(':checked')
nie ma tego problemu.$('.ClassName').is(':checked')
nie działa, ale$('#' + id).is(":checked")
działa? poza tym, że ktoś szuka według identyfikatora, a drugi według nazwy klasy.Powyższy kod zwraca wartość true, jeśli pole wyboru jest zaznaczone, lub false, jeśli nie.
źródło
var isChecked = $('#CheckboxID').attr('checked') ? true : false;
ale nie zawsze zwracałem prawidłową wartość. Więc dziękuję!Przydatne są wszystkie następujące metody:
Zaleca się, aby unikać DOMelement lub wbudowanego „this.checked” zamiast tego jQuery na metodzie powinien być używany jako detektor zdarzeń.
źródło
Kod jQuery, aby sprawdzić, czy pole wyboru jest zaznaczone:
Alternatywnie:
źródło
:
... prawidłowa brzmi:if(('input[name="checkBoxName"]').is(':checked'))
.if($('input[name="checkBoxName"]').is(':checked'))
.else
bloku, ponieważ obiekt jQuery, nawet jeśli nie zawiera pasujących elementów, jest „prawdziwy”. Dodaj.length
do końca, a potem mówisz.Możliwe są wszystkie poniższe metody
źródło
Możesz użyć tego kodu,
źródło
Zgodnie z jQuery dokumentacją istnieją następujące sposoby sprawdzenia, czy pole wyboru jest zaznaczone, czy nie. Rozważmy na przykład pole wyboru (Sprawdź działający jsfiddle ze wszystkimi przykładami)
Przykład 1 - z zaznaczoną
Przykład 2 - z jQuery jest, UWAGA -: zaznaczone
Przykład 3 - Z propozycją jQuery
Sprawdź Działający jsfiddle
źródło
Możesz spróbować:
źródło
attr
odzwierciedla tylko wartość atrybutu w HTML, a nie wartość właściwości w DOM. Zapoznaj się z dokumentacjąattr
, w której jest napisane: „Aby pobrać i zmienić właściwości DOM, takie jak elementychecked
,selected
lubdisabled
stan formularza, użyj.prop()
metody.” Oraz dokumentacjęprop
, w której jest napisane: „.prop()
Metodę należy ustawić,disabled
achecked
zamiast tego o.attr()
metodzie „.Możesz użyć dowolnego z poniższych zalecanych kodów według jquery.
źródło
Wiem, że OP chce jquery, ale w moim przypadku odpowiedzią była czysta JS, więc jeśli ktoś taki jak ja jest tutaj i nie ma jquery lub nie chce jej używać - oto odpowiedź JS:
Zwraca true, jeśli dane wejściowe o identyfikatorze myCheck są sprawdzone, a false, jeśli nie jest sprawdzone.
Proste.
źródło
$("#myCheck")[0].checked
będzie działać w jquery! : DMożesz to zrobić po prostu jak;
Working Fiddle
HTML
jQuery
lub nawet prościej;
Jeśli
checkbox
zaznaczone, zwrócitrue
inaczejundefined
źródło
or even simpler;
->$("#checkbox").checked
Z tego często korzystam:
Jeśli zostanie sprawdzony, zwróci 1; w przeciwnym razie zwróci 0.
źródło
Prosta wersja demonstracyjna do sprawdzania i ustawiania pola wyboru.
jsfiddle !
źródło
Wystarczy powiedzieć w moim przykładzie, że sytuacja była oknem dialogowym, które następnie weryfikowało pole wyboru przed zamknięciem okna dialogowego. Żadne z powyższych i jak sprawdzić, czy pole wyboru jest zaznaczone w jQuery? i jQuery, jeśli pole wyboru jest zaznaczone, również nie działało.
Na końcu
To zadziałało, wywołując klasę, a następnie identyfikator. zamiast samego identyfikatora. Przyczyną może być zagnieżdżone elementy DOM na tej stronie. Obejście było powyżej.
źródło
Dla pola wyboru z identyfikatorem
możesz po prostu zrobić
otrzymasz
true
lubfalse
jako wartość zwracaną dla powyższej składni. Można go użyć w klauzuli if jako normalne wyrażenie logiczne.źródło
Coś takiego może pomóc
źródło
Właściwie według jsperf.com , operacje DOM są najszybsze, następnie $ (). Prop (), a następnie $ (). () !!
Oto składnie:
Ja osobiście wolę
.prop()
. W przeciwieństwie do.is()
tego można go również użyć do ustawienia wartości.źródło
Zaznacz pole wyboru zaznaczone
źródło
Za pomocą tego kodu można zaznaczyć, że co najmniej jedno pole wyboru jest zaznaczone lub nie w różnych grupach pól wyboru lub z wielu pól wyboru. Za pomocą tego nie można wymagać usunięcia identyfikatorów ani identyfikatorów dynamicznych. Ten kod działa z tymi samymi identyfikatorami.
Link referencyjny
źródło
Ponieważ jest połowa 2019 roku, a jQuery czasami zajmuje miejsce na zapleczu takich rzeczy, jak VueJS, React itp. Oto opcja nasłuchiwania JavaScript z czystą wanilią:
źródło
Twoje pytanie nie jest jasne: chcesz podać „id pola tablicy wyboru” na wejściu i uzyskać
true/false
na wyjściu - w ten sposób nie będziesz wiedział, które pole wyboru zostało zaznaczone (jak sugeruje nazwa funkcji). Poniżej moja propozycja ciała,isCheckedById
które przy wejściu weź pole wyboruid
i przy zwrocie wynikutrue/false
(to bardzo proste, ale twój identyfikator nie powinien być słowem kluczowym),Pokaż fragment kodu
źródło
użyj kodu poniżej
źródło
$(function() { $("[id$='chkSendMail']").on("change", ShowMailSection); });
$("[id$='chkSendMail']:checked]")