Possiblissimo con jquery e select2 (un piccolo plugin)
Io uso questa funzione
codice:
function render_special_select(divname, classname, is_id, width) {
if (width != undefined) {
var larg = width;
} else {
var larg = "150px !important";
}
if (is_id) {
jquery_element = $('#' + divname);
} else {
jquery_element = $(divname);
}
jquery_element.select2({
containerCssClass : classname,
dropdownCssClass : classname + "_results",
minimumResultsForSearch : 5,
allowClear : true,
enabled: true,
placeholder : "Scegli...",
formatNoMatches : function(term) {
return "Nessuna corrispondenza trovata";
},
formatSearching : function() {
return "Ricerca in corso...";
},
width : larg
});
}
che aggancio a una normale select html
codice:
<div id="contenitore_drop_down_ID_Tipo_Record_lista" >
<select id="drop_down_ID_Tipo_Record_lista" name="drop_down_ID_Tipo_Record_lista" size="25" class="">
<option value="22" >Fattura Emessa</option>
<option value="30" >Prevetivo Attivo</option>
<option value="31" >Proforma Attivo</option>
<option value="23" >Fattura Ricevuta</option>
<option value="62" >Nota di Credito</option>
<option value="430" >Nota di Credito Ricevuta</option>
<option value="429" >Ddt</option>
<option value="0" selected="selected">Tutti</option>
</select>
</div>
e poi la richiamo via js con
codice:
render_special_select('#contenitore_drop_down_ID_Tipo_Record_lista select', 'new_drop_down', false);
Questo in pratica crea una "nuova" select che ha incorporato un campo di ricerca e, mentre digiti, "toglie" tutte le opzioni della select che NON contengono quello che stai digitando.
Credo che sia più o meno quello che stai cercando.
Vedi https://select2.org/appearance#example