Verwenden von JQuery, um zu überprüfen, ob kein Optionsfeld in einer Gruppe aktiviert wurde
Lesezeit: 3 Minuten
Ich sitze mit einem Problem, ich muss mit JQuery überprüfen, ob kein Optionsfeld innerhalb einer Optionsfeldgruppe aktiviert wurde, damit ich den Benutzern einen Javascript-Fehler geben kann, wenn sie vergessen haben, eine Option zu aktivieren.
Ich verwende den folgenden Code, um die Werte zu erhalten
var radio_button_val = $("input[name="html_elements"]:checked").val();
if (!$("input[name="html_elements"]:checked").val()) {
alert('Nothing is checked!');
}
else {
alert('One of the radio buttons is checked!');
}
Dies schlägt fehl, wenn das aktivierte Optionsfeld einen Wert hat = “”
– ScottE
15. Januar 2010 um 14:41 Uhr
@ScottE – ausgezeichneter Punkt – Ich werde diese Antwort entfernen, wenn Roland sie nicht akzeptiert.
– Dominic Rodger
15. Januar 2010 um 14:48 Uhr
Ich denke, du könntest es einfach ändern .val() == "" und entfernen Sie die ! und du wärst fertig.
– Doug Neiner
15. Januar 2010 um 21:08 Uhr
@Doug – hätte das nicht immer noch das von ScottE erwähnte Problem? Was würde .val() zurück, wenn das aktivierte Optionsfeld hatte value=""? (Obwohl ich nehme an, Sie könnten argumentieren, dass dies ein ziemlich unwahrscheinlicher Fall ist).
– Dominic Rodger
16. Januar 2010 um 9:09 Uhr
Entschuldigung, mein Kommentar war verwirrend: Ich wollte, dass der gesamte Test so aussieht: if ($("input[name='html_elements']:checked").val() == "") Was würde “Nichts ist überprüft” benachrichtigen
Und wird FALSE zurückgeben, wenn alle Elemente in der Funkgruppe deaktiviert sind, und TRUE, wenn ein Element aktiviert ist.
Diese Antwort funktionierte für mich zuverlässig, um zu überprüfen, ob eine Optionsfeldgruppe einen ausgewählten Wert hatte. Beste Antwort im Thread.
– Andy Koch
29. April 2013 um 19:21 Uhr
Sowohl die Antwort von Dominic Rodger als auch von Jacobo Hernández funktionieren gut. Ich persönlich versuche, niemals das führende NOT (!) am Anfang der Zeile zu verwenden. Jahre später wird es schwierig zu debuggen, wenn Sie das übersehen und die Logik rückwärts haben … is (“:checked”) ist sehr klar, was Sie tun – Beste Antwort.
– Scott
15. Februar 2016 um 16:44 Uhr
Doug Neiner
Du könntest so etwas machen:
var radio_buttons = $("input[name="html_elements"]");
if( radio_buttons.filter(':checked').length == 0){
// None checked
} else {
// If you need to use the result you can do so without
// another (costly) jQuery selector call:
var val = radio_buttons.val();
}
Könnten Sie die ersten beiden Zeilen nicht auf eingrenzen if ($("input[name='html_elements']:checked").length == 0){ ?
– Machtherr
15. Januar 2010 um 14:53 Uhr
Sie könnten, aber dann benötigen Sie eine weitere vollständige jQuery-Auswahl, um den Wert zu erhalten, wenn Sie zeigen, dass ein Wert vorhanden ist.
– Doug Neiner
15. Januar 2010 um 21:06 Uhr
if ($("input[name="html_elements"]:checked").size()==0) {
alert('Nothing is checked!');
}
else {
alert('One of the radio buttons is checked!');
}