Ändern Sie den ausgewählten Wert einer Dropdown-Liste mit jQuery
Ich habe ein drop-down-Liste mit den bekannten Werten. Was ich versuche zu tun ist, legen Sie das drop-down-Liste einen bestimmten Wert, dass ich weiß, existiert der Verwendung von jQuery. Mit regelmäßigen JavaScript, ich möchte etwas tun wie:
ddl = document.getElementById("ID of element goes here");
ddl.value = 2; //2 being the value I want to set it too.
Jedoch brauche ich dies mit jQuery, denn ich bin mit einer CSS-Klasse für meine Auswahl (dumm ASP.NET client-ids...).
Hier sind ein paar Dinge, die ich versucht habe:
$("._statusDDL").val(2); //Doesn't find 2 as a value.
$("._statusDDL").children("option").val(2) //Also failed.
Wie kann ich das mit jQuery?
Update
So, wie es stellt sich heraus, ich hatte es das erste mal richtig mit:
$("._statusDDL").val(2);
Wenn ich eine Warnung nur oben funktioniert es einwandfrei, aber wenn ich entfernen Sie den Alarm und lassen ihn auf vollen Touren laufen, bekomme ich die Fehlermeldung
Konnte nicht setzen der selected-Eigenschaft. Der Index Ungültig Ist
Ich bin mir nicht sicher ob es ein bug ist mit jQuery oder Internet Explorer 6 (ich vermute Internet Explorer 6), aber es ist furchtbar lästig.
InformationsquelleAutor der Frage phairoh | 2009-01-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
die jQuery-Dokumentation Staaten:
Dieses Verhalten ist in
jQuery
Versionen1.2
und oben.Werden Sie wahrscheinlich wollen, dass diese:
InformationsquelleAutor der Antwort strager
Mit versteckten Feld, das Sie verwenden müssen, wie diese:
oder
InformationsquelleAutor der Antwort Aivar Luist
Nur ein FYI, Sie brauchen nicht zu verwenden CSS-Klassen, um dies zu erreichen.
Schreiben Sie die folgende Codezeile, um die richtigen control-Namen auf dem client:
ASP.NET machen die Steuerelement-ID richtig im jQuery.
InformationsquelleAutor der Antwort y0mbo
Nur versuchen mit
nicht mit
InformationsquelleAutor der Antwort emas
Diese Lösungen scheinen anzunehmen, dass die einzelnen Elemente in der drop-down-Listen hat ein val() Wert in Bezug auf Ihre position in der drop-down-Liste.
Dinge sind ein wenig komplizierter, wenn dies nicht der Fall ist.
Zu Lesen den ausgewählten index aus einem drop-down-Liste, verwenden Sie diese:
Zu set den ausgewählten index aus einem drop-down-Liste, verwenden Sie diese:
Beachten Sie, dass die prop() Funktion benötigt JQuery v1.6 oder höher.
Lassen Sie uns sehen, wie würden Sie diese beiden Funktionen.
Angenommen, dass Sie hatte eine drop-down-Liste der Monatsnamen.
Könnte man hinzufügen, "Vorheriger Monat" und "Nächster Monat" - Schaltfläche, die aussieht bei dem aktuell ausgewählten drop-down-Liste den Eintrag, und ändert es, um den vorherigen/nächsten Monat:
Und hier ist das JavaScript, das diese Tasten laufen würde:
Folgende Website ist auch nützlich, für die, die zeigt, wie füllen Sie eine Dropdown-Liste mit JSON-Daten:
http://mikesknowledgebase.com/pages/Services/WebServices-Page8.htm
Puh !!
Hoffe, das hilft.
InformationsquelleAutor der Antwort Mike Gledhill
Nachdem man einige Lösungen, dieses arbeitete für mich.
Habe ich ein drop-down-Liste mit einigen Werten und ich möchten, wählen Sie den gleichen Wert von einem anderen drop-down-Liste... Also erstmal ich habe in einer variable die
selectIndex
meiner ersten drop-down.Dann wähle ich diesen index auf meinem zweiten drop-down-Liste.
Hinweis:
Ich denke, dies ist der kürzeste, zuverlässig, Allgemeine und elegante Lösung.
Da in meinem Fall, ich bin mit der gewählten option data-Attribut anstelle des value-Attribut.
Also, wenn Sie nicht haben einen einmaligen Wert für jede option, die oben genannte Methode ist die kürzeste und süß!!
InformationsquelleAutor der Antwort ISIK
Ich weiß, das ist eine alte Frage, und die oben genannten Lösungen funktioniert gut, außer in einigen Fällen.
Wie
Also Punkt 4 wird sich zeigen, als "Ausgewählt" in den browser ein und jetzt wollen Sie den Wert ändern, der als 3-und-show "Item3" ausgewählt anstelle von Element4.Also gemäß der oben genannten Lösungen,wenn Sie
Werden Sie sehen, dass Punkt 3 als gewählt im browser.Aber wenn du die Daten verarbeiten, entweder in php oder asp , finden Sie ausgewählte Wert "4".Der Grund dafür ist , dass dein html-Code so Aussehen.
und es wird der Letzte Wert "4" in Server-side-Sprache.
ALSO MEINE ENDGÜLTIGE LÖSUNG DIESER HINSICHT
BEARBEITEN: Fügen Sie einzelne zitieren, um "+newselectedIndex+", so dass die gleiche Funktionalität kann verwendet werden für nicht-numerische Werte.
Also, was ich mache, ist eigentlich ,entfernt das ausgewählte Attribut, und stellen Sie dann die neue als ausgewählt.
Ich würde mich über Kommentare von erfahrenen Programmierern wie @strager , @y0mbo , @ISIK und anderen
InformationsquelleAutor der Antwort Rocker Maruf
Wenn wir eine dropdown-Liste mit dem Titel "Klassifizierung von Daten":
Können wir es in eine variable:
Dann in eine andere variable den Wert, den wir möchten, dass die dropdown-Liste haben:
Dann können wir das Feld, das wir in
dataClsField
ist, machen Sie eine finden, die fürmyValue
und machen es ausgewählt.prop()
:Oder Sie konnte einfach
.val()
aber Ihre Wähler.
können nur verwendet werden, wenn Sie mit einer Klasse auf die dropdown-Liste, und Sie sollten verwenden Zitate auf den Wert innerhalb der Klammer, oder verwenden Sie einfach die variable, die wir zuvor festgelegt:InformationsquelleAutor der Antwort vapcguy
Ich habe dieses viele Male, wenn das laden von Daten aus einem Ajax-call. Auch ich verwenden .NET, und es braucht Zeit, um zu erhalten, angepasst an die clientId bei der Verwendung der jQuery-Selektor. Um das problem zu beheben, das Sie haben und zu vermeiden, fügen Sie ein
setTimeout
Eigenschaft können Sie setzen Sie einfach "async: false
" in der Ajax-Aufruf, und es wird die DOM-genug Zeit, um die Objekte zurück, die Sie hinzufügen, um die wählen Sie. Ein kleines Beispiel:InformationsquelleAutor der Antwort clockwiseq
Verwende ich eine extend-Funktion verwenden, um client-ids wie so:
Dann können Sie anrufen ASP.NET controls in jQuery wie diese:
InformationsquelleAutor der Antwort jonofan
Weitere option ist, um die Steuerung param ClientID="Statisch".Netz und dann können Sie den Zugriff auf das Objekt in JQuery durch die ID, die Sie gesetzt.
InformationsquelleAutor der Antwort Mych
Nur eine Anmerkung - ich habe mit Platzhalter-Selektoren in jQuery auf Gegenstände greifen, die sind verdeckt ASP.NET CLient-IDs - das könnte dir auch helfen:
Hinweis: die id* wildcard - diese finden Ihr element, auch wenn der name "ctl00$ctl00$ContentPlaceHolder1$ContentPlaceHolder1$MyDropDown"
InformationsquelleAutor der Antwort AVH
Wie sind Sie mit dem laden der Werte in der drop-down-Liste oder zu bestimmen, welcher Wert zu wählen? Wenn Sie dies tun, mit Ajax, dann ist der Grund müssen Sie die Verzögerung, bevor die Auswahl erfolgt sein könnte, weil die Werte waren nicht geladen, an der Zeit, dass die betreffende Zeile ausgeführt. Dies würde auch erklären, warum es funktioniert, wenn Sie eine alert-Anweisung auf der Zeile vor der Einstellung der status seit der alert-Aktion geben würde, genug von einer Verzögerung, die Daten zu laden.
Wenn Sie mit einer jQuery-Ajax-Methoden, können Sie eine callback-Funktion und setzen Sie dann
$("._statusDDL").val(2);
in der callback-Funktion.Wäre dies ein zuverlässiger Umgang mit dem Thema, da Sie sicher sein konnte, dass die Methode, die ausgeführt wird, wenn die Daten bereit war, auch wenn es länger dauerte als 300 ms.
InformationsquelleAutor der Antwort Pervez Choudhury
Verwenden
$("select[name$='MyDropDown']").val()
.InformationsquelleAutor der Antwort Monty
ClientIDMode="Static"
InformationsquelleAutor der Antwort hamze shoae