941 Stimmen

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

Ich habe eine Dropdown-Liste mit bekannten Werten. Ich versuche, die Dropdown-Liste auf einen bestimmten Wert einzustellen, von dem ich weiß, dass er existiert, indem ich jQuery . Regulär verwenden JavaScript würde ich so etwas tun wie:

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 weil ich eine CSS Klasse für meinen Selektor (dumm ASP.NET Client-IDs...).

Hier sind ein paar Dinge, die ich ausprobiert habe:

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

Wie kann ich das tun mit jQuery ?


Update

Wie sich herausstellte, hatte ich beim ersten Mal alles richtig gemacht:

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

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

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

Ich bin mir nicht sicher, ob es ein Fehler in jQuery ist oder Internet Explorer 6 (Ich vermute, dass das Internet Entdecker 6 ), aber es ist furchtbar ärgerlich.

22 Stimmen

Das Problem war letztendlich ein Problem mit dem IE6. I

0 Stimmen

Sie könnten reines Javascript verwenden dd1 = document.getElementsByClassName('classname here'); dd1.value = 2;

0 Stimmen

3voto

jonofan Punkte 341

Ich verwende eine Erweiterungsfunktion, um Client-IDs zu erhalten, etwa so:

$.extend({
    clientID: function(id) {
        return $("[id$='" + id + "']");
    }
});

Dann können Sie ASP.NET-Steuerelemente in jQuery wie folgt aufrufen:

$.clientID("_statusDDL")

3voto

Mych Punkte 2459

Eine andere Möglichkeit besteht darin, den Kontrollparameter ClientID="Static" in .net zu setzen, und dann können Sie auf das Objekt in JQuery über die von Ihnen festgelegte ID zugreifen.

3voto

AVH Punkte 1645

Nur ein Hinweis - ich habe mit Wildcard-Selektoren in jQuery, um Elemente, die durch ASP.NET Client-IDs verschleiert sind zu greifen - das könnte Ihnen auch helfen:

<asp:DropDownList id="MyDropDown" runat="server" />

$("[id* = 'MyDropDown']").append("<option value='-1'>&nbsp;</option>"); //etc

Beachten Sie den Platzhalter id* - damit wird Ihr Element auch dann gefunden, wenn der Name "ctl00$ctl00$ContentPlaceHolder1$ContentPlaceHolder1$MyDropDown" lautet.

2voto

Pervez Choudhury Punkte 2798

Wie laden Sie die Werte in die Auswahlliste 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 zu dem Zeitpunkt geladen wurden, zu dem die betreffende Zeile ausgeführt wurde. 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 beim Laden der Daten bewirkte.

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

Dies wäre eine zuverlässigere Methode, da man sicher sein könnte, dass die Methode ausgeführt wird, wenn die Daten bereit sind, auch wenn es länger als 300 ms dauert.

1voto

<asp:DropDownList ID="DropUserType" ClientIDMode="Static" runat="server">
     <asp:ListItem Value="1" Text="aaa"></asp:ListItem>
     <asp:ListItem Value="2" Text="bbb"></asp:ListItem>
</asp:DropDownList>

ClientIDMode="Statisch"

$('#DropUserType').val('1');

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