Verwenden von JQuery, um zu überprüfen, ob kein Optionsfeld in einer Gruppe aktiviert wurde

107

Ich habe ein Problem. Ich muss bei JQuery nachfragen, 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();
Elitmiar
quelle

Antworten:

146
if (!$("input[name='html_elements']:checked").val()) {
   alert('Nothing is checked!');
}
else {
  alert('One of the radio buttons is checked!');
}
Dominic Rodger
quelle
17
Dies
schlägt
1
@ScottE - ausgezeichneter Punkt - Ich werde diese Antwort entfernen, wenn Roland sie nicht akzeptiert.
Dominic Rodger
Ich denke, Sie könnten es einfach ändern .val() == ""und entfernen, !und Sie wären fertig.
Doug Neiner
@Doug - hätte das nicht immer noch das Problem, das ScottE erwähnt hat? Was würde .val()zurückkehren, wenn das aktivierte Optionsfeld vorhanden wäre value=""? (Obwohl ich denke, Sie könnten argumentieren, dass dies ein ziemlich unwahrscheinlicher Fall ist).
Dominic Rodger
1
Entschuldigung, mein Kommentar war verwirrend: Ich wollte, dass der gesamte Test so aussieht: if ($("input[name='html_elements']:checked").val() == "")Was "Nichts wird überprüft"
warnt
144

Ich benutze

$("input:radio[name='html_radio']").is(":checked")

Und gibt FALSE zurück, wenn alle Elemente in der Radiogruppe deaktiviert sind, und TRUE, wenn ein Element aktiviert ist.

Jacobo Hernández
quelle
3
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 Cook
1
Sowohl die Antwort von Dominic Rodger als auch von Jacobo Hernández funktionieren gut. Ich persönlich versuche niemals das führende NICHT (!) 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 ... ist (": geprüft") sehr klar, was Sie tun - Beste Antwort.
Scott
32

Sie könnten so etwas tun:

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();
}
Doug Neiner
quelle
2
Könnten Sie die ersten beiden Zeilen nicht auf nur if ($("input[name='html_elements']:checked").length == 0){eingrenzen?
Powerlord
7
Sie könnten, aber dann würden Sie eine weitere vollständige jQuery-Auswahl benötigen, um den Wert zu erhalten, wenn Sie zeigten, dass ein Wert vorhanden ist.
Doug Neiner
5
if ($("input[name='html_elements']:checked").size()==0) {
   alert('Nothing is checked!');
}
else {
  alert('One of the radio buttons is checked!');
}
Fanjabi
quelle
2
var len = $('#your_form_id input:radio:checked').length;
      if (!len) {
        alert("None checked");
      };
      alert("checked: "+ len);
David Okwii
quelle
2

Ich denke, dies ist ein einfaches Beispiel, wie man überprüft, ob ein Radio in einer Gruppe von Radios überprüft wurde.

if($('input[name=html_elements]:checked').length){
    //a radio button was checked
}else{
    //there was no radio button checked
} 
Vitali D.
quelle
0

Ich benutze das viel einfacher

HTML

<label class="radio"><input id="job1" type="radio" name="job" value="1" checked>New Job</label>
<label class="radio"><input id="job2" type="radio" name="job" value="2">Updating Job</label>


<button type="button" class="btn btn-primary" onclick="save();">Save</button>

SKRIPT

 $('#save').on('click', function(e) {
    if (job1.checked)
        {
              alert("New Job"); 
        }
if (job2.checked)
        {
            alert("Updating Job");
        }

}}

Mathew Magante
quelle