Zmiana wybranej wartości listy rozwijanej za pomocą jQuery

Mam listę rozwijaną z znanymi wartościami. To, co próbuję zrobić, to ustawić listę rozwijaną na konkretną wartość, o której wiem, że istnieje przy użyciu jQuery. Używając zwykłego JavaScriptu, zrobiłbym coś takiego:

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

Jednakże, muszę to zrobić za pomocą jQuery, ponieważ używam klasy CSS dla mojego selektora (głupie ASP.NET identyfikatory klientów...).

Oto kilka rzeczy, które próbowałem:

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

Jak mogę to zrobić za pomocą jQuery?

Uaktualnienie

Więc jak się okazuje, miałem to dobrze za pierwszym razem z:

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

Kiedy umieszczam alert tuż nad nim, działa on dobrze, ale kiedy usuwam alert i pozwalam mu działać na pełnych obrotach, dostaję błąd

Nie można ustawić wybranej właściwości. Nieprawidłowy indeks

Nie jestem pewien, czy to błąd z jQuery czy Internet Explorer 6 (ja'zgaduję, że Internet Explorer 6), ale to'jest strasznie denerwujące.

Rozwiązanie

dokumentacja jQuery's stwierdza:

[jQuery.val] sprawdza, czyli selekcjonuje, wszystkie przyciski radiowe, pola wyboru i opcje select, które pasują do zestawu wartości.

To zachowanie występuje w jQuery w wersjach 1.2 i wyższych.

Najprawdopodobniej tego właśnie chcesz:

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

Spróbuj z

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

a nie z

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

W jaki sposób ładujesz wartości do listy rozwijanej lub określasz, którą wartość wybrać? Jeśli robisz to za pomocą Ajaxa, to powodem, dla którego potrzebujesz opóźnienia przed dokonaniem wyboru, może być to, że wartości nie zostały załadowane w czasie, gdy linia, o której mowa, została wykonana. Wyjaśniłoby to również, dlaczego zadziałało, gdy umieściłeś alert w linii przed ustawieniem statusu, ponieważ akcja alertu dałaby wystarczająco dużo opóźnienia, aby dane zostały załadowane.

Jeśli używasz jednej z metod jQuery' Ajax, możesz określić funkcję wywołania zwrotnego, a następnie umieścić $("._statusDDL").val(2); w swojej funkcji wywołania zwrotnego.

Byłby to bardziej niezawodny sposób obsługi problemu, ponieważ mógłbyś być pewien, że metoda została wykonana, gdy dane były gotowe, nawet jeśli trwało to dłużej niż 300 ms.

Komentarze (0)