JQuery - Suchen Sie ein Optionsfeld nach Wert


95

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

Antworten:


142

Versuche dies:

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

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


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

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

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

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.

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.