3067 Stimmen

Wie kann ich wissen, welche Optionsschaltfläche über jQuery ausgewählt ist?

Ich habe zwei Optionsfelder und möchte den Wert des ausgewählten Feldes ausgeben. Wie kann ich den Wert mit jQuery erhalten?

Ich kann sie alle auf diese Weise bekommen:

$("form :radio")

Woher weiß ich, welcher ausgewählt ist?

4301voto

Peter J Punkte 56480

Um den Wert des Parameters ausgewählt radioName Element eines Formulars mit id myForm :

$('input[name=radioName]:checked', '#myForm').val()

Hier ist ein Beispiel:

$('#myForm input').on('change', function() {
   alert($('input[name=radioName]:checked', '#myForm').val()); 
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="myForm">
  <input type="radio" name="radioName" value="1" /> 1 <br />
  <input type="radio" name="radioName" value="2" /> 2 <br />
  <input type="radio" name="radioName" value="3" /> 3 <br />
</form>

10 Stimmen

Ich füge dies nur hinzu, weil es jemandem helfen könnte. Wenn der Name des Radios hat Klammern wie radioName[0] (manchmal in Wordpress verwendet), müssen Sie Anführungszeichen um den Namen wie input[name='radioName[0]']:checked verwenden

3 Stimmen

Im Beispiel der onChange-Methode können Sie auch this.value anstelle von $('input[name=radioName]:checked', '#myForm').val() verwenden :)

0 Stimmen

Für eine Version ohne Jquery siehe hier: jsfiddle.net/2y76vp1e

467voto

Joberror Punkte 5710

Benutzen Sie das..

$("#myform input[type='radio']:checked").val();

349voto

Matt Browne Punkte 11583

Wenn Sie bereits einen Verweis auf eine Optionsschaltflächengruppe haben, z. B.:

var myRadio = $("input[name=myRadio]");

Verwenden Sie die filter() Funktion, nicht find() . ( find() dient zum Auffinden von Kind-/Nachfahrerelementen, während filter() sucht nach Elementen der obersten Ebene in Ihrer Auswahl).

var checkedValue = myRadio.filter(":checked").val();

Notas: Mit dieser Antwort wurde ursprünglich eine andere Antwort korrigiert, die die Verwendung von find() die anscheinend inzwischen geändert wurde. find() könnte immer noch nützlich sein, wenn Sie bereits einen Verweis auf ein Containerelement haben, aber nicht auf die Optionsfelder, z. B.:

var form = $("#mainForm");
...
var checkedValue = form.find("input[name=myRadio]:checked").val();

160voto

Cam Tullos Punkte 2427

Das sollte funktionieren:

$("input[name='radioName']:checked").val()

Beachten Sie das "", das um input:checked herum verwendet wird, und nicht '' wie bei der Lösung von Peter J.

0 Stimmen

Warum wird anstelle des Wertes des ausgewählten Optionsfeldes "on" zurückgegeben?

88voto

tvanfosson Punkte 506878

Sie können den Selektor :checked zusammen mit dem Radioselektor verwenden.

 $("form:radio:checked").val();

14 Stimmen

Das sieht nett aus, aber die jQuery-Dokumentation empfiehlt die Verwendung von [type=radio] anstelle von :radio, um die Leistung zu verbessern. Es ist ein Kompromiss zwischen Lesbarkeit und Leistung. Normalerweise ziehe ich bei solch trivialen Dingen die Lesbarkeit der Leistung vor, aber in diesem Fall denke ich, dass [type=radio] tatsächlich klarer ist. In diesem Fall würde es also wie $("form input[type=radio]:checked").val() aussehen. Trotzdem eine gültige Antwort.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X