Ändern Sie den ausgewählten Wert einer Dropdown-Liste mit jQuery

Ich habe eine Dropdown-Liste mit bekannten Werten. Was ich zu tun versuche, ist die Dropdown-Liste auf einen bestimmten Wert, die ich weiß, existiert mit jQuery gesetzt. Mit regulären JavaScript, würde ich etwas wie tun:

ddl = document.getElementById("ID of element goes here");
ddl.value = 2; // 2 being the value I want to set it too.

Ich muss dies jedoch mit jQuery tun, weil ich eine CSS-Klasse für meinen Selektor verwende (dumme ASP.NET Client-IDs...).

Hier sind ein paar Dinge, die ich've versucht:

$("._statusDDL").val(2); // Doesn't find 2 as a value.
$("._statusDDL").children("option").val(2) // Also failed.

Wie kann ich das mit jQuery machen?

Update

Wie sich herausstellt, hatte ich es beim ersten Mal richtig mit:

$("._statusDDL").val(2);

Wenn ich eine Warnung direkt darüber einfüge, funktioniert es gut, aber wenn ich die Warnung entferne und es mit voller Geschwindigkeit laufen lasse, bekomme ich den Fehler

Die ausgewählte Eigenschaft konnte nicht gesetzt werden. Ungültiger Index

Ich bin nicht sicher, ob es ein Fehler mit jQuery oder Internet Explorer 6 ist (ich vermute Internet Explorer 6), aber es ist furchtbar ärgerlich.

Lösung

jQuery' s Dokumentation Staaten:

[jQuery.val] prüft bzw. wählt*** alle Optionsfelder, Kontrollkästchen und Auswahloptionen aus, die mit dem Wertesatz übereinstimmen.

Dieses Verhalten ist in jQuery Versionen 1.2 und höher.

Wahrscheinlich wollen Sie das:

$("._statusDDL").val('2');
Kommentare (9)

Versuchen Sie es einfach mit

$("._statusDDL").val("2");

und nicht mit

$("._statusDDL").val(2);
Kommentare (0)

Wie laden Sie die Werte in die Dropdown-Liste oder bestimmen Sie, welcher Wert ausgewählt werden soll? Wenn Sie dies mit Ajax tun, könnte der Grund für die Verzögerung vor der Auswahl darin liegen, dass die Werte nicht zum Zeitpunkt der Ausführung der betreffenden Zeile geladen wurden. Dies würde auch erklären, warum es funktionierte, wenn Sie vor dem Setzen des Status eine Warnanweisung in die Zeile einfügten, da die Warnaktion eine ausreichende Verzögerung für das Laden der Daten bewirken würde.

Wenn Sie eine der Ajax-Methoden von jQuery verwenden, können Sie eine Callback-Funktion angeben und dann $("._statusDDL").val(2); in Ihre Callback-Funktion einfügen.

Dies wäre ein zuverlässigerer Weg, das Problem zu lösen, da Sie sicher sein können, dass die Methode ausgeführt wird, wenn die Daten bereit sind, auch wenn es länger als 300 ms dauert.

Kommentare (0)