JQuery - Suchen Sie ein Optionsfeld nach Wert

95

Wie würde ich JQuery verwenden, um ein Optionsfeld anhand seines Werts zu finden?

van
quelle

Antworten:

142

Versuche dies:

$(":radio[value=foobar]")

Dadurch werden alle Optionsfelder mit dem Attribut ausgewählt value="foobar".

Gumbo
quelle
Danke, ich habe es als solches verwendet: jQuery.each (cookieObj, Funktion (i, val) {$ (": radio [value = val]"). Attr ('geprüft', wahr);});
van
3
@ Test: Versuchen Sie dies stattdessen:function(i, val) { $(":radio[value="+val+"]").attr('checked',true); }
Gumbo
1
@Gumbo Wenn wir dieser Funktion einen Namen geben, können wir sie dann so nennen?: $ CheckedRadioValues ​​= findChecked ("value");
Ben Sewards
25

Ich verwende jQuery 1.6 und dies hat bei mir nicht funktioniert: $(":radio[value=foobar]").attr('checked',true);

Stattdessen benutze ich: $('[value="foobar"]').attr('checked',true); und es funktioniert großartig.

Der tatsächliche Code, den ich verwende, löscht zuerst die Funkgeräte und verwendet propstattdessenattr

$('[name=menuRadio]').prop('checked',false);

$('[name=menuRadio][value="Bar Menu"]').prop('checked',true);
dogatonisch
quelle
Ist das ein Fehler, der behoben wurde? oder sollten wir den Wert trotzdem in Anführungszeichen setzen?
Simon_Weaver
19

Dies kann auch dadurch erreicht werden:

$('input[type="radio"][value="aaa"]').val();

Dadurch wird das Radio ausgewählt, das den Wert aaa hat


Mit .filter()Methode:

var radio =  $('input[type="radio"]').filter(function(){
                       return this.value === 'aaa';
                      }).val();
Jai
quelle
1
Dies wird tatsächlich alle Optionsfelder auswählen und ihre Werte ändern, um aaadann den'aaa'
Bendman
5

Angenommen, Sie haben so etwas im HTML:

<fieldset>
    <input type="radio" name="UI_opt" value="alerter" checked> Alerter<br/>
    <input type="radio" name="UI_opt" value="printer"> Printer<br/>
    <input type="radio" name="UI_opt" value="consoler"> Consoler<br/>
</fieldset>

dann funktioniert so etwas.

$("fieldset input[name='UI_opt'][checked]").val()
Dylan Trevena
quelle
2

Ein vollständiger Selektor würde folgendermaßen aussehen:

bool shipToBilling = $("[name=ShipToBillingAddress][value=True]")

vorausgesetzt, Sie haben wahrscheinlich mehr als eine Optionsfeldgruppe wie diese

<input name="ShipToBillingAddress" type="radio" value="True" checked="checked">
<input name="ShipToBillingAddress" type="radio" value="False">

<input name="SomethingElse" type="radio" value="True" checked="checked">
<input name="SomethingElse" type="radio" value="False">

Die Verwendung eines solchen ID-Selektors (nächstes Beispiel) ist schlecht, da Sie nicht mehrere Elemente mit derselben ID haben sollten. Ich gehe davon aus, dass jemand, der diese Frage findet, bereits weiß, dass dies schlecht ist.

$("#DidYouEnjoyTheMovie:radio[value=yes]")

Das Folgende über :radiokann von Interesse sein oder auch nicht

Da: radio eine jQuery-Erweiterung ist und nicht Teil der CSS-Spezifikation ist, können Abfragen mit: radio die Leistungssteigerung der nativen DOM-Methode querySelectorAll () nicht nutzen. Verwenden Sie stattdessen [type = "radio"], um eine bessere Leistung in modernen Browsern zu erzielen.

Simon_Weaver
quelle