javascript - attribute - jQuery-setzt den ausgewählten Wert eines Select-Controls über seine Textbeschreibung



jquery select option set selected (13)

Ich habe ein Select-Steuerelement, und in einer Javascript-Variable habe ich eine Textzeichenfolge.

Mit jQuery möchte ich das ausgewählte Element des Auswahlsteuerelements als Element mit der Textbeschreibung festlegen, die ich habe (im Gegensatz zu dem Wert, den ich nicht habe).

Ich weiß, dass es ziemlich trivial ist, es nach Wert zu setzen. z.B

$("#my-select").val(myVal);

Aber ich bin ein wenig ratlos, wenn ich es über die Textbeschreibung mache. Ich denke, es muss einen Weg geben, den Wert aus der Textbeschreibung herauszubekommen, aber mein Gehirn ist zu Freitag nachmittag, um es auszuarbeiten.


Answer #1

Angesichts dieses HTML:

<select>
    <option value="0">One</option>
    <option value="1">Two</option>
</select>

Wählen Sie eine Beschreibung für jQuery v1.6 +:

var text1 = 'Two';
$("select option").filter(function() {
    //may want to use $.trim in here
    return $(this).text() == text1; 
}).prop('selected', true);

Wählen Sie nach Beschreibung für jQuery-Versionen unter 1.6 und größer als oder gleich 1.4 : https://.com/a/3644500/31532

var text1 = 'Two';
$("select option").filter(function() {
    //may want to use $.trim in here
    return $(this).text() == text1; 
}).attr('selected', true);

Beachten Sie, dass dieser Ansatz zwar in Versionen über 1,6, aber unter 1,9 funktioniert, seit 1.6 veraltet ist. Es wird nicht in jQuery 1.9+ funktionieren.

Wählen Sie nach Beschreibung für frühere Versionen:

val() sollte beide Fälle behandeln. Siehst du es nicht?

Z.B:

$('select').val('1'); // selects "Two"
$('select').val('Two'); // also selects "Two"

Answer #2

Der einfachste Weg mit 1.7+ ist:

$("#myDropDown option:text=" + myText +"").attr("selected", "selected"); 

1.9+

$("#myDropDown option:text=" + myText +"").prop("selected", "selected"); 

Getestet und funktioniert.


Answer #3

Diese akzeptierte Antwort scheint nicht korrekt zu sein, während .val ('newValue') für die Funktion korrekt ist. Der Versuch, ein select anhand seines Namens zu finden, funktioniert bei mir nicht. Ich musste die ID und den Klassennamen verwenden, um mein Element zu erhalten


Answer #4

Hier ist ein sehr einfacher Weg. plz benutze es

$("#free").val("y").change();

Answer #5

Hol die Kinder von der Auswahlbox; Schleife durch sie; Wenn Sie den gewünschten gefunden haben, stellen Sie ihn als ausgewählte Option ein. Gibt false zurück, um das Schleifen zu stoppen.


Answer #6

Ich habe das nicht getestet, aber das könnte für Sie funktionieren.

$("select#my-select option")
   .each(function() { this.selected = (this.text == myVal); });

Answer #7

Ich hatte ein Problem mit den obigen Beispielen, und das Problem wurde durch die Tatsache verursacht, dass meine Auswahlboxwerte mit Zeichenfolgen fester Länge von 6 Zeichen vorgefüllt sind, aber der Parameter, der übergeben wurde, hatte keine feste Länge.

Ich habe eine rpad-Funktion, die eine Zeichenfolge, auf die angegebene Länge und mit dem angegebenen Zeichen rechts auffüllen wird. Nach dem Auffüllen des Parameters funktioniert es also.

$('#wsWorkCenter').val(rpad(wsWorkCenter, 6, ' '));


function rpad(pStr, pLen, pPadStr) {
if (pPadStr == '') {pPadStr == ' '};
while (pStr.length < pLen)
    pStr = pStr + pPadStr;
return pStr; 
} 

Answer #8

Ich mache es auf diesem Weg (jQuery 1.9.1)

$("#my-select").val("Dutch").change();

Hinweis: Vergessen Sie nicht die Änderung (), ich musste dazu lange suchen :)


Answer #9

Nur eine Randnotiz. Mein ausgewählter Wert wurde nicht festgelegt. Und ich musste im ganzen Netz suchen. Eigentlich musste ich nach einem Rückruf von einem Webservice einen Wert auswählen, weil ich Daten von ihm bekam.

$("#SelectMonth option[value=" + DataFromWebService + "]").attr('selected', 'selected'); 
$("#SelectMonth").selectmenu('refresh', true);

Die Aktualisierung des Selektors war das einzige, was mir fehlte.


Answer #10

Probieren Sie dies ... um die Option mit Text myText auszuwählen

$("#my-Select option[text=" + myText +"]").attr("selected","selected");

Answer #11

werfen Sie einen Blick auf das Plugin jquery selectedbox

selectOptions(value[, clear]): 

Wählen Sie Optionen nach Wert, indem Sie eine Zeichenfolge als Parameter $("#myselect2").selectOptions("Value 1"); oder ein regulärer Ausdruck $("#myselect2").selectOptions(/^val/i); .

Sie können auch bereits ausgewählte Optionen löschen: $("#myselect2").selectOptions("Value 2", true);


Answer #12
 $("#Test").find("option:contains('two')").each(function(){
     if( $(this).text() == 'two' ) {
        $(this).attr("selected","selected");
     }
 });

Die if-Anweisung stimmt mit "zwei" und "zwei drei" genau überein


Answer #13
$("#myselect option:contains('YourTextHere')").val();

Gibt den Wert der ersten Option mit Ihrer Textbeschreibung zurück. Getestet und funktioniert.





jquery