¿Cómo puedo, usando JQuery, verificar si un valor pertenece a la lista desplegable o no?
¿Cómo puedo, usando JQuery, verificar si un valor pertenece a la lista desplegable o no?
Respuestas:
Usar el selector de atributo es igual a
var thevalue = 'foo';
var exists = 0 != $('#select-box option[value='+thevalue+']').length;
Si el valor de la opción se estableció a través de Javascript, eso no funcionará. En este caso podemos hacer lo siguiente:
var exists = false;
$('#select-box option').each(function(){
if (this.value == 'bar') {
exists = true;
return false;
}
});
return false
?
En caso de que usted (o alguien más) pueda estar interesado en hacerlo sin 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;
}
Aquí hay otra opción similar. En mi caso, estoy verificando valores en otro cuadro mientras construyo una lista de selección. Seguí encontrando valores indefinidos cuando comparaba, así que configuré mi cheque de esta manera:
if ( $("#select-box option[value='" + thevalue + "']").val() === undefined) { //do stuff }
No tengo idea de si este enfoque es más caro.
¿Por qué no utilizar un filtro?
var thevalue = 'foo';
var exists = $('#select-box option').filter(function(){ return $(this).val() == thevalue; }).length;
Las comparaciones sueltas funcionan porque existe> 0 es verdadero, existe == 0 es falso, por lo que puede usar
if(exists){
// it is in the dropdown
}
O combinarlo:
if($('#select-box option').filter(function(){ return $(this).val() == thevalue; }).length){
// found
}
O donde cada menú desplegable de selección tiene la clase de cajas de selección, esto le dará un objeto jquery de las selecciones que contienen el valor:
var matched = $('.select-boxes option').filter(function(){ return $(this).val() == thevalue; }).parent();
if(!$('#select-box').find("option:contains('" + thevalue + "')").length){
//do stuff
}
theValue
sino el option_number
menú desplegable. Tu solución está mal.
Sé que esta es una pregunta antigua, ya que esta funciona mejor.
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 puede ver en este ejemplo, estoy buscando por nombre de lista desplegable de datos de etiquetas únicas y el valor de la opción seleccionada. Por supuesto, no los necesita para que funcionen, pero los incluí para que otros pudieran ver que puede buscar valores múltiples, etc.
]
y `\`. Evite crear cadenas de selección a partir de texto sin formato sin realizar un escape CSS adecuado.