Wiem, jak sprawdzić, czy pojedyncze pole wyboru jest zaznaczone, czy nie.
Mam jednak problem z następującymi elementami - mając identyfikator formularza, muszę sprawdzić, czy którekolwiek z pól wyboru jest zaznaczone (tj. 1 lub więcej), i muszę sprawdzić, czy żadne z nich nie jest zaznaczone. Zasadniczo potrzebuję dwóch oddzielnych funkcji, które odpowiadają na te dwa pytania. Pomoc będzie mile widziana. Dzięki!
Właściwie potrzebowałbym tylko funkcji, która powie mi, czy żadna nie jest wybrana. Wiedza o tym byłaby odpowiedzią na inne pytanie.
javascript
jquery
forms
bba
źródło
źródło
Odpowiedzi:
Możesz użyć czegoś takiego
źródło
$("#formID input:checkbox:checked").length
tutaj też by wystarczyłoif ($("#formID input:checkbox:checked").length){}
(bez>0
) byłoby wystarczające, ponieważ 0 to wartość falsey, patrz james.padolsey.com/javascript/truthy-falsey:checkbox
selektorze :,For better performance in modern browsers, use [type="checkbox"]
patrz api.jquery.com/checkbox-selector - to samo dla radiobuttons btw,use [type="radio"] rather than :radio
api.jquery.com/radio-selectorJQuery
.is
przetestuje wszystkie określone elementy i zwróci wartość true, jeśli przynajmniej jeden z nich pasuje do selektora:źródło
is()
wydaje się działać, mając:checked
bezpośrednio w selektorze, jak wskazano w odpowiedzi użytkownika @ rahul wydaje się bardziej odpowiedni. Funkcja is () wydaje się bardziej użyteczna, gdy „wewnętrzne wywołania zwrotne”, zobacz api.jquery.com/is . A może coś mi brakuje?.is(":checked")
Twoje rozwiązanie jest bardziej wyraziste, ale nie jestem pewien co do reszty.$("form input[type=checkbox]").is(":checked")
może być prostszym i bardziej ogólnym podejściem.is
może być lepszą wydajnością, ponieważ zatrzymuje się, gdy tylko znajdzie.Możesz to zrobić:
Gdzie:
:checkbox
selektor filtru zaznacza wszystkie pola wyboru.:checked
zaznaczy zaznaczone pola wyborulength
poda liczbę zaznaczonych tamźródło
:checkbox
selektorze:For better performance in modern browsers, use [type="checkbox"]
patrz api.jquery.com/checkbox-selectorOto, czego użyłem do sprawdzenia, czy jakiekolwiek pola wyboru na liście pól wyboru uległy zmianie:
źródło
Bez używania „length” możesz to zrobić w ten sposób:
źródło
Możesz zrobić prosty zwrot
.length
tutaj:Poszukuje pól wyboru w podanym formularzu, sprawdza, czy jakieś są
:checked
i zwraca,true
jeśli tak jest (ponieważ w przeciwnym razie długość wynosiłaby 0). Aby było to trochę jaśniejsze, oto wersja nieprzekonwertowana logicznie:To zwróci liczbę sprawdzonych.
źródło
Odpowiedź Rahula najlepiej pasuje do Twojego pytania. W każdym razie, jeśli masz grupę pól wyboru do zaznaczenia, a nie wszystkie pola wyboru w formularzu, możesz to zrobić.
Umieść nazwę klasy dla wszystkich pól wyboru, które chcesz zaznaczyć, na przykład nazwę klasy,
test_check
a teraz możesz sprawdzić, czy którekolwiek z pól wyboru należących do grupy jest zaznaczone:Jeśli zwróci
true
, załóżmy, że co najmniej jedno pole wyboru jest zaznaczone z nazwą klasytest_check
i żadne nie jest zaznaczone, jeśli zwracafalse
.Mam nadzieję, że to komuś pomoże. Dzięki :)-
źródło
To najlepszy sposób na rozwiązanie tego problemu.
źródło