Acabo de implementar esta característica rápida y sucia. Utiliza algunas variables globales, es posible que desee mejorar la implementación para eliminarlas.
Aquí el '#xsca_member_filter' es el filtro como una entrada de texto y '# members' es la entrada de selección.
$('documenet').ready(function(){
init();
$('#xsca_member_filter').keyup(function(){
filter($(this));
});
});
//save all available options with their values and the empty option.
init = function(){
options = new Object();
$('#owner option').each(function(){
var obj = $(this);
if(obj.attr("value") != "")
options[obj.attr('value')] = obj.html();
else
emptyOption = obj.html();
});
selObj = $('#owner');
};
filter = function(elem){
var filter = elem.val();
var selected = $('#owner option:selected').val();
//delete all options and add the empty option
selObj.html("");
selObj.append("<option> "+emptyOption+" </option>");
//add all options conaining the filter string
for(value in options){
var option = options[value];
if((options[value]).indexOf(filter) != -1){
selObj.append("<option value='"+value+"'> "+options[value]+" </option>");
}
}
//select the previously selected option
$("#owner option[value = '"+selected+"']").prop("selected", true);
}
Esto es exactamente lo que estaba buscando. ¿Te importaría si alguien empaquetara esto como un plugin de JQuery y lo distribuyera? Estoy pensando en lanzar algunos complementos el próximo mes y este sería uno bueno. –
Hazlo. Tal vez enlace de vuelta a la página original en la fuente, si eso está bien? –
Sí, claro, ¡si alguna vez se lanza! He estado sentado en una carga de código que sigo teniendo la intención de lanzar como complementos JQuery/prototype desde el comienzo del año. –