2009-04-01 13 views
32

Ho utilizzato un plug-in prototipo che filtra il contenuto di un menu a discesa durante la digitazione. Ad esempio, se hai digitato "gatto" nella casella di testo, solo gli elementi contenenti la sottostringa 'gatto' verranno lasciati come opzioni nel menu a discesa.Jquery: elenco a discesa dei filtri durante la digitazione

Qualcuno sa di un plugin jQuery che può fare questo?

risposta

27

ho scritto a little script to do this a pochi anni fa. Potrebbe essere facilmente impacchettato come un plug-in jQuery, probabilmente. Sei il benvenuto.

Lo faccio anche nel mio widget Dashboard PHP Function Reference se si desidera visualizzare il codice lì.

+0

Questo è esattamente ciò che cercavo. Ti dispiacerebbe se qualcuno lo abbia confezionato come plugin JQuery e lo abbia distribuito? Il mese prossimo sto pensando di rilasciare alcuni plugin e questo ne farebbe uno buono. –

+0

Vai per questo. Magari rimanda alla pagina originale della fonte, se va bene? –

+0

Sì certo, se verrà mai rilasciato! Sono stato seduto su un carico di codice che ho intenzione di rilasciare come plugin JQuery/prototipo dall'inizio dell'anno. –

8

jQuery autocomplete plug

EDIT: Ho inizialmente legata al plugin autocomplete sbagliata.

+0

Questo plugin è stata aggiornata più di un anno fa (gennaio 2008); è un po 'lungo nel tempo di i-net. – BryanH

+0

Fa il lavoro perfettamente su tutti i browser, per quanto ne so, e l'ho ottenuto in produzione. Ora mi hai un po 'preoccupato ... – karim79

+0

Filtra gli elenchi o crea solo elenchi basati sull'input? –

50

Stavo cercando qualcosa di simile, e il migliore per quello che mi serve sembra essere il JQuery UI MultiSelect. Trasforma le caselle di selezione multipla in una bella vista a doppio elenco, con filtro attivo nell'elenco principale.

MODIFICA: Nuovo sviluppo!

"Chosen è un plugin JavaScript che rende lunghe e ingombranti selezionare le caselle molto più user-friendly. E 'attualmente disponibile in entrambi i sapori jQuery e Prototype."

Sto utilizzando totalmente Chosen su tutti i progetti selezionati in un futuro prevedibile.

+1

+100 punti! MultiSelect è esattamente il plugin che stavo cercando! – Mark

+2

@ Mark Check out [Scelti] (http://harvesthq.github.com/chosen/); sembra molto meglio di MultiSelect. –

+0

Scelto è il migliore! – dariol

25

Select2 è un fork piuttosto recente di Chosen e ha molte più funzioni (ad esempio AJAX + HTML personalizzato per singoli elementi).

1

Ho appena implementato questa funzione rapida e sporca. Usa alcune variabili globali, potresti voler migliorare l'implementazione per rimuoverle.

Qui il '#xsca_member_filter' è il filtro come input di testo e '#members' è l'input di selezione.

$('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

Per un semplice esempio di tag select. –

Problemi correlati