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();

Antworten:


146
if (!$("input[name='html_elements']:checked").val()) {
   alert('Nothing is checked!');
}
else {
  alert('One of the radio buttons is checked!');
}

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.


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();
}

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!');
}


2
var len = $('#your_form_id input:radio:checked').length;
      if (!len) {
        alert("None checked");
      };
      alert("checked: "+ len);

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
} 

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");
        }

}}

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.