Eu tenho uma lista com valores conhecidos. O que eu'estou tentando fazer é definir a lista suspensa para um determinado valor que eu sei que existe usando jQuery. Usando o JavaScript normal, eu faria algo como:
ddl = document.getElementById("ID of element goes here");
ddl.value = 2; // 2 being the value I want to set it too.
Entretanto, eu preciso fazer isso com jQuery, porque eu'estou usando uma classe CSS para o meu seletor (estúpido ASP.NET ids do cliente...).
Aqui estão algumas coisas que eu'já tentei:
$("._statusDDL").val(2); // Doesn't find 2 as a value.
$("._statusDDL").children("option").val(2) // Also failed.
Como posso fazer isso com jQuery?
**Actualização***
Então, ao que parece, eu acertei na primeira vez:
$("._statusDDL").val(2);
Quando coloco um alerta logo acima funciona bem, mas quando retiro o alerta e o deixo correr a toda a velocidade, recebo o erro
Não foi possível definir o imóvel seleccionado. Índice inválido
I'não tenho certeza se ele'é um bug com jQuery ou Internet Explorer 6 (I'estou adivinhando Internet Explorer 6), mas ele'é terrivelmente irritante.
documentação da jQuery afirma:
[jQuery.val] verifica, ou selecciona, todos os botões de rádio, caixas de seleção e selecione as opções que correspondem ao conjunto de valores.
Este comportamento está nas versões jQuery
1.2
e acima.
O mais provável é que que queiras isto:
$("._statusDDL").val('2');
Como você está carregando os valores na lista suspensa ou determinando qual valor selecionar? Se você estiver fazendo isso usando Ajax, então o motivo pelo qual você precisa do atraso antes da seleção pode ser porque os valores não foram carregados no momento em que a linha em questão foi executada. Isso também explicaria porque funcionou quando você colocou uma declaração de alerta na linha antes de definir o status, já que a ação de alerta daria um atraso suficiente para que os dados fossem carregados.
Se você estiver utilizando um dos métodos Ajax do jQuery, você pode especificar uma função de callback e então colocar $("._statusDDL").val(2);
na sua função de callback.
Esta seria uma forma mais confiável de lidar com o problema, já que você poderia ter certeza de que o método executado quando os dados estivessem prontos, mesmo que levasse mais de 300 ms.