2009-04-01 29 views
32

He utilizado un complemento prototipo que filtra el contenido de un menú desplegable a medida que escribe. Por ejemplo, si escribió 'gato' en el cuadro de texto, solo los elementos que contengan la subcadena 'gato' quedarán como opciones en el menú desplegable.Jquery: lista desplegable de filtro mientras escribe

¿Alguien sabe de un plugin jquery que puede hacer esto?

Respuesta

27

escribí a little script to do this hace unos años. Podría empaquetarse como un complemento jQuery con bastante facilidad, probablemente. Eres bienvenido.

También hago esto en mi widget PHP Function Reference Dashboard si quiere ver el código allí.

+0

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. –

+0

Hazlo. Tal vez enlace de vuelta a la página original en la fuente, si eso está bien? –

+0

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. –

8

jQuery plugin de autocomplete

EDIT: inicialmente vinculado con el plugin autocompletar mal.

+0

Este plugin fue actualizado por última hace más de un año (enero de 2008); eso es un poco largo en i-net time. – BryanH

+0

Funciona perfectamente en todos los navegadores hasta donde yo sé, y lo tengo en producción. Ahora me tienes un poco preocupado ... – karim79

+0

¿Filtra las listas o solo crea listas basadas en la entrada? –

50

Yo estaba buscando algo similar, y la mejor para lo que necesito parece ser el JQuery UI MultiSelect. Convierte los cuadros de selección múltiple en una vista de listas duales muy ingeniosa, con filtrado activo en la lista maestra.

EDIT: New Development!

"Chosen es un plugin de JavaScript que hace, seleccione las casillas difíciles de manejar largas mucho más fáciles de usar. Está disponible actualmente en dos sabores jQuery y Prototype."

Estoy usando totalmente Chosen en todos los proyectos de selección de uso en el futuro previsible.

+1

+100 puntos! ¡MultiSelect es exactamente el complemento que he estado buscando! – Mark

+2

@Mark Vea [Elegido] (http://harvesthq.github.com/chosen/); parece mucho mejor que MultiSelect. –

+0

Elegido es el mejor! – dariol

25

Select2 es una bifurcación bastante reciente de Elegido y tiene muchas más funciones (por ejemplo, AJAX + HTML personalizado para elementos individuales).

1

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); 
} 
0

$(document).ready(function() { 
 
    $("#myInput").on("keyup", function() { 
 
    var value = $(this).val().toLowerCase(); 
 
    $("#filter *").filter(function() { 
 
     $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1) 
 
    }); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 

 
<h2>Filter</h2> 
 
<input id="myInput" type="text" placeholder="Search.."> 
 
<br><br> 
 
<div class="filter-by"> 
 
    <span>Filter by:</span> 
 
    <select class="status-filter" id="filter"> 
 
    <option value="">All</option> 
 
    <option value="paid">Paid</option> 
 
    <option value="accepted">Accepted</option> 
 
    <option value="pending">Pending</option> 
 
    <option value="rejected">Rejected</option> 
 
    </select> 
 
</div>

+0

Para un ejemplo simple de etiqueta de selección. –

Cuestiones relacionadas