Como posso, usando JQuery, verificar se um valor pertence à lista suspensa ou não?
Como posso, usando JQuery, verificar se um valor pertence à lista suspensa ou não?
Respostas:
Use o Seletor de Igualdade de Atributo
var thevalue = 'foo';
var exists = 0 != $('#select-box option[value='+thevalue+']').length;
Se o valor da opção foi definido via Javascript, isso não funcionará. Nesse caso, podemos fazer o seguinte:
var exists = false;
$('#select-box option').each(function(){
if (this.value == 'bar') {
exists = true;
return false;
}
});
return false
?
Apenas no caso de você (ou outra pessoa) estar interessado em fazer isso sem jQuery:
var exists = false;
for(var i = 0, opts = document.getElementById('select-box').options; i < opts.length; ++i)
if( opts[i].value === 'bar' )
{
exists = true;
break;
}
Aqui está outra opção semelhante. No meu caso, estou verificando os valores em outra caixa enquanto construo uma lista de seleção. Continuei encontrando valores indefinidos quando comparava, então configurei minha verificação desta forma:
if ( $("#select-box option[value='" + thevalue + "']").val() === undefined) { //do stuff }
Não tenho ideia se essa abordagem é mais cara.
Por que não usar um filtro?
var thevalue = 'foo';
var exists = $('#select-box option').filter(function(){ return $(this).val() == thevalue; }).length;
As comparações vagas funcionam porque existe> 0 é verdadeiro, existe == 0 é falso, então você pode apenas usar
if(exists){
// it is in the dropdown
}
Ou combine-o:
if($('#select-box option').filter(function(){ return $(this).val() == thevalue; }).length){
// found
}
Ou onde cada menu suspenso de seleção tem a classe de caixas de seleção, isso lhe dará um objeto jquery da (s) seleção (ões) que contém o valor:
var matched = $('.select-boxes option').filter(function(){ return $(this).val() == thevalue; }).parent();
if(!$('#select-box').find("option:contains('" + thevalue + "')").length){
//do stuff
}
theValue
senão a option_number
lista suspensa. Sua solução está errada.
Eu sei que esta é uma pergunta meio antiga, mas esta funciona melhor.
if(!$('.dropdownName[data-dropdown="' + data["item"][i]["name"] + '"] option[value="'+data['item'][i]['id']+'"]')[0]){
//Doesn't exist, so it isn't a repeat value being added. Go ahead and append.
$('.dropdownName[data-dropdown="' + data["item"][i]["name"] + '"]').append(option);
}
Como você pode ver neste exemplo, estou pesquisando pelo nome da lista suspensa de dados de tags exclusivas e o valor da opção selecionada. Claro que você não precisa deles para que funcionem, mas eu os incluí para que outros pudessem ver que você pode pesquisar valores múltiplos, etc.
]
e `\`. Evite construir sequências de seletores a partir de texto bruto sem fazer o escape CSS adequado.