Mam dwa przyciski opcji w formularzu HTML. Okno dialogowe pojawia się, gdy jedno z pól jest puste. Jak mogę sprawdzić, czy przycisk opcji jest wybrany?
javascript
Nowicjusz
źródło
źródło
Odpowiedzi:
Udawajmy, że masz taki HTML
Aby sprawdzić poprawność po stronie klienta, oto JavaScript, aby sprawdzić, który jest wybrany:
Powyższe może być bardziej wydajne w zależności od dokładnej natury twojego znacznika, ale to powinno wystarczyć, aby zacząć.
Jeśli chcesz tylko sprawdzić, czy jakiś przycisk opcji jest zaznaczony w dowolnym miejscu na stronie, PrototypeJS to bardzo proste.
Oto funkcja, która zwróci wartość true, jeśli przynajmniej jeden przycisk opcji zostanie wybrany gdzieś na stronie. Ponownie może to wymagać dostosowania w zależności od konkretnego kodu HTML.
W przypadku sprawdzania poprawności po stronie serwera (pamiętaj, że sprawdzanie poprawności nie może polegać wyłącznie na JavaScript!) , Zależy to od wybranego języka, ale sprawdzasz tylko
gender
wartość ciągu żądania.źródło
Z jQuery byłoby to coś w rodzaju
Pozwól, że podzielę to na kawałki, aby jaśniej to zakryć. jQuery przetwarza rzeczy od lewej do prawej.
input
ogranicza to do tagów wejściowych.[name=gender]
ogranicza go do tagów o nazwie płeć w poprzedniej grupie.:checked
ogranicza to do pól wyboru / przycisków opcji, które są wybrane w poprzedniej grupie.Jeśli chcesz całkowicie tego uniknąć, zaznacz jeden z przycisków opcji jako zaznaczony (
checked="checked"
) w kodzie HTML, co zagwarantuje, że zawsze zostanie wybrany jeden przycisk opcji.źródło
Waniliowy sposób JavaScript
źródło
name
.Próbuję ulepszyć rozwiązanie Russ Cam, dodając cukier selektorowy CSS z waniliowym JavaScript.
Nie ma tutaj potrzeby używania jQuery, querySelectorAll jest teraz wystarczająco obsługiwany.
Edycja: naprawiłem błąd w selektorze css, umieściłem cytaty, chociaż możesz je pominąć, w niektórych przypadkach nie możesz, więc lepiej je zostawić.
źródło
a[href^="http://"]
) byłyby one wymagane, a spójność jest łatwiejsza do utrzymania. Poza tym pozwala to deklaracji atrybutu dopasować odpowiedni HTML.Kod HTML
Kod JavaScript:
źródło
Możesz użyć tego prostego skryptu. Możesz mieć wiele przycisków opcji o takich samych nazwach i różnych wartościach.
źródło
document.forms[0].elements['nameOfRadioList'].value
Skrypty na tej stronie pomogły mi wymyślić poniższy skrypt, który moim zdaniem jest bardziej kompletny i uniwersalny. Zasadniczo sprawdzi poprawność dowolnej liczby przycisków opcji w formularzu, co oznacza, że upewni się, że wybrano opcję opcji dla każdej z różnych grup opcji w formularzu. np. w poniższym formularzu testu:
Skrypt RadioValidator upewni się, że udzielono odpowiedzi zarówno na „test1”, jak i „test2” przed przesłaniem. W formularzu możesz mieć tyle grup radiowych, co zignoruje wszelkie inne elementy formularza. Wszystkie brakujące odpowiedzi radiowe pojawią się w oknie podręcznym jednego ostrzeżenia. Mam nadzieję, że to pomoże ludziom. Wszelkie naprawy błędów i pomocne modyfikacje są mile widziane :)
źródło
Zwróć uwagę na to zachowanie związane z jQuery podczas pobierania wartości wejściowych radia:
Tak
$('input[name="myRadio"]').val()
nie zwróci sprawdzenia wartości wejściowych radiowej, jak można się spodziewać - zwraca wartość pierwszego przycisku radiowego.źródło
Z mootools ( http://mootools.net/docs/core/Element/Element )
HTML:
js:
źródło
jest to funkcja narzędzia, którą stworzyłem, aby rozwiązać ten problem
źródło
Dotyczy to przycisków radiowych o tej samej nazwie, nie wymaga JQuery.
Jeśli mówimy o polach wyboru i chcemy, aby lista z zaznaczonymi polami wyboru miała wspólną nazwę:
źródło
źródło
drobna modyfikacja Marka Bieka;
KOD HTML
i kod Javascript, aby sprawdzić, czy wybrany jest przycisk opcji
źródło
Istnieje bardzo wyrafinowany sposób na sprawdzenie, czy którykolwiek z przycisków opcji jest sprawdzany za pomocą ECMA6 i metody
.some()
.HTML:
I javascript:
isAnyRadioButtonChecked
będzie,true
jeśli niektóre przyciski opcji są zaznaczone, afalse
żaden z nich nie jest zaznaczony.źródło
źródło
http://www.somacon.com/p143.php/
źródło
W JQuery innym sposobem sprawdzenia aktualnego stanu przycisków opcji jest uzyskanie atrybutu „zaznaczone”.
Na przykład:
W takim przypadku możesz sprawdzić przyciski za pomocą:
źródło
$("#gender_male").attr("checked")
jest łańcuchem,"checked"
a nie wartością logiczną.Ten kod ostrzeże wybrany przycisk radiowy po przesłaniu formularza. Użył jQuery, aby uzyskać wybraną wartość.
źródło
Użyłem operatora rozkładania, a niektóre sprawdzają, czy przynajmniej jeden element w tablicy przechodzi test.
Podzielam się o kogo martwić.
źródło
Oto rozwiązanie, które zostało rozszerzone, aby nie kontynuować przesyłania i wysłać alert, jeśli przyciski radiowe nie są zaznaczone. Oczywiście oznaczałoby to, że musisz je odznaczyć na początek!
Pamiętaj tylko, aby ustawić identyfikator („radio1”, „radio2” lub jakkolwiek to nazwałeś) w formularzu dla każdego przycisku opcji, w przeciwnym razie skrypt nie będzie działał.
źródło
if (!document.getElementById('radio1').checked && !document.getElementById('radio2').checked) { alert(); }
.Przykład:
źródło
Formularz
Scenariusz
Skrzypce: http://jsfiddle.net/PNpUS/
źródło
Chcę tylko upewnić się, że coś zostanie wybrane (przy użyciu jQuery):
źródło
Jeśli chcesz waniliowy JavaScript, nie zaśmiecaj znaczników, dodając identyfikatory na każdym przycisku opcji, i dbasz tylko o nowoczesne przeglądarki , poniższe funkcjonalne podejście jest dla mnie trochę bardziej gustowne niż pętla for:
Jeśli żadna z nich nie jest zaznaczona, zwróci
undefined
(chociaż możesz zmienić powyższą linię, aby zwrócić coś innego, np. Dostaćfalse
, możesz zmienić odpowiednią linię powyżej na}).pop() || {value:false}).value;
:).Istnieje również przyszłościowe podejście do wypełniania pól, ponieważ interfejs RadioNodeList powinien ułatwić korzystanie z
value
właściwości na liście elementów potomnych formularzy radiowych (znajdujących się w powyższym kodzie jakoformElement[radioName]
), ale wiąże się to z własnymi problemami: Sposób wypełniania RadioNodeList ?źródło
Działa to również, unikając wywoływania identyfikatora elementu, ale wywołując go jako element tablicy.
Poniższy kod opiera się na fakcie, że tablica o nazwie grupa przycisków radiobuttons składa się z elementów przycisków radiobuttonów w tej samej kolejności, w jakiej zostały zadeklarowane w dokumencie HTML:
źródło
HTML:
JAVAScript:
źródło
Podaj przyciski radiowe, tę samą nazwę, ale różne identyfikatory.
źródło