Eu tenho um controle select e, em uma variável javascript, tenho uma string de texto.
Usando jQuery, desejo definir o elemento selecionado do controle select como o item com a descrição de texto que tenho (em oposição ao valor, que não tenho).
Eu sei que defini-lo por valor é bastante trivial. por exemplo
$("#my-select").val(myVal);
Mas estou um pouco perplexo ao fazê-lo através da descrição do texto. Acho que deve haver uma maneira de extrair o valor da descrição do texto, mas meu cérebro está muito atrasado na sexta-feira para poder resolver isso.
javascript
jquery
DanSingerman
fonte
fonte
Respostas:
Selecione por descrição para o jQuery v1.6 +
Versões jQuery abaixo de 1,6 e maiores que ou iguais a 1,4
Observe que, embora essa abordagem funcione em versões superiores a 1,6, mas inferiores a 1,9, ela foi preterida desde a versão 1.6. Não funcionará no jQuery 1.9+.
Versões prévias
val()
deve lidar com os dois casos.fonte
value
se o atributo foi especificado e somente selecionar por texto se ovalue
atributo estiver ausente. Portanto, neste exemplo$('select').val('Two')
, selecione a segunda opção no 1.3.x, mas não fará nada no 1.4.x.Não testei isso, mas isso pode funcionar para você.
fonte
Tente isto ... para selecionar a opção com o texto myText
fonte
$("#my-Select option[text=" + myText +"]").get(0).selected = true;
estilo clássico de tempos em tempos: (....prop
vez de.attr
; a causa da mudança é que, no 1.9, o jQuery desativou os hacks antigos que permitem usar.attr
algumas propriedades do DOM e atributos HTML. (Googlejavascript dom properties vs attributes
, se você não sabe a diferença.).prop('selected', true)
vez da.attr('selected', 'selected')
compatibilidade com o jQuery 1.9+.Eu faço dessa maneira (jQuery 1.9.1)
Nota: não esqueça a mudança (), tive que pesquisar muito por causa disso :)
fonte
retornará o valor da primeira opção que contém sua descrição de texto. Testei isso e funciona.
fonte
Para evitar todas as complicações da versão do jQuery, recomendo sinceramente o uso de uma dessas funções javascript realmente simples ...
fonte
Sei que este é um post antigo, mas não consegui selecioná-lo por texto usando o jQuery 1.10.3 e as soluções acima. Acabei usando o seguinte código (variação da solução de spoulson):
Espero que ajude alguém.
fonte
Esta linha funcionou:
fonte
A instrução if faz uma correspondência exata com "dois" e "dois três" não será correspondida
fonte
A maneira mais fácil com 1.7+ é:
1.9+
Testado e funciona.
fonte
.prop
para alterar as propriedades do DOM, não.attr
(que é para atributos HTML / DOM). Veja stackoverflow.com/q/5874652/1709587Aqui está uma maneira muito simples. plz usá-lo
fonte
dê uma olhada no plugin jquery selectedbox
Selecione opções por valor, usando uma sequência como parâmetro
$("#myselect2").selectOptions("Value 1");
ou uma expressão regular$("#myselect2").selectOptions(/^val/i);
.Você também pode limpar as opções já selecionadas:
$("#myselect2").selectOptions("Value 2", true);
fonte
Apenas em uma nota lateral. Meu valor selecionado não estava sendo definido. E eu tinha pesquisado por toda a rede. Na verdade, tive que selecionar um valor após uma chamada de retorno de um serviço da web, porque estava obtendo dados dele.
Portanto, a atualização do seletor foi a única coisa que estava faltando.
fonte
Eu descobri que usando
attr
você, você terminaria com várias opções selecionadas quando não quisesse - a solução é usarprop
:$("#myDropDown option:text=" + myText +"").prop("selected", "selected");
fonte
Eu tive um problema com os exemplos acima, e o problema foi causado pelo fato de meus valores da caixa de seleção serem pré-preenchidos com cadeias de comprimento fixo de 6 caracteres, mas o parâmetro transmitido não era de comprimento fixo.
Eu tenho uma função rpad que irá preencher uma string com o tamanho especificado e com o caractere especificado. Então, depois de preencher o parâmetro, ele funciona.
fonte
fonte
Essa resposta aceita não parece correta, enquanto .val ('newValue') está correto para a função, tentar recuperar uma seleção por seu nome não funciona para mim, tive que usar o id e o nome da classe para obter meu elemento
fonte
Heres uma opção fácil. Apenas defina sua opção de lista e defina seu texto como valor selecionado:
fonte
Pegue os filhos da caixa de seleção; loop através deles; quando você encontrar o que deseja, defina-o como a opção selecionada; retorne false para parar o loop.
fonte