Jeg har en rullegardinliste med kjente verdier. Det jeg prøver å gjøre er å sette rullegardinlisten til en bestemt verdi som jeg vet eksisterer ved hjelp av jQuery. Ved hjelp av vanlig JavaScript, ville jeg gjøre noe sånt som:
ddl = document.getElementById("ID of element goes here");
ddl.value = 2; // 2 being the value I want to set it too.
Imidlertid må jeg gjøre dette med jQuery, fordi jeg bruker en CSS-klasse for velgeren min (dumme ASP.NET klient-ID-er ...).
Her er noen ting jeg har prøvd:
$("._statusDDL").val(2); // Doesn't find 2 as a value.
$("._statusDDL").children("option").val(2) // Also failed.
Hvordan kan jeg gjøre det med jQuery?
Oppdatering
Så det viser seg at jeg hadde det riktig første gang med:
$("._statusDDL").val(2);
Når jeg setter et varsel rett over, fungerer det bra, men når jeg fjerner varselet og lar det kjøre i full hastighet, får jeg feilen
Kunne ikke angi den valgte egenskapen. Ugyldig indeks
Jeg er ikke sikker på om det er en feil med jQuery eller Internet Explorer 6 (jeg gjetter Internet Explorer 6), men det er veldig irriterende.
jQuerys dokumentasjon sier:
[jQuery.val] sjekker, eller velger, alle radioknappene, avmerkingsboksene og valgalternativene som samsvarer med verdisettet.
Denne oppførselen er i jQuery
versjoner 1.2
og nyere.
Du vil mest sannsynlig ha dette:
$("._statusDDL").val('2');
Hvordan laster du inn verdiene i rullegardinlisten eller bestemmer hvilken verdi som skal velges? Hvis du gjør dette ved hjelp av Ajax, kan grunnen til at du trenger forsinkelsen før valget skjer, være at verdiene ikke ble lastet inn på det tidspunktet den aktuelle linjen ble utført. Dette ville også forklare hvorfor det fungerte når du satte en varslingsuttalelse på linjen før du satte status, siden varslingshandlingen ville gi nok forsinkelse til at dataene ble lastet inn.
Hvis du bruker en av jQuerys Ajax-metoder, kan du spesifisere en tilbakeringingsfunksjon og deretter sette $("._statusDDL").val(2);
i tilbakeringingsfunksjonen.
Dette ville være en mer pålitelig måte å håndtere problemet på siden du kunne være sikker på at metoden ble utført når dataene var klare, selv om det tok lengre tid enn 300 & nbsp; ms.