Veja o exemplo de como implementei no meu código.
<select id="campo-select" name="campo-select" onclick="naytech_autocomplete(this.id)" style='width:100%;height:40px'>
<option>--SELECIONE--</option>
</select>
Só lembrando que esses valores também podem vim de uma consulta no banco de dados, arrumando o arrei do mesmo da forma que está abaixo antes de retornar ao javascript.
$array[] = ['id_opcao'=>5,'opcao'=>"ActionScript"];
$array[] = ['id_opcao'=>10,'opcao'=>"AppleScript"];
$array[] = ['id_opcao'=>15,'opcao'=>"BASIC"];
$array[] = ['id_opcao'=>20,'opcao'=>"ColdFusion"];
$array[] = ['id_opcao'=>25,'opcao'=>"Erlang"];
$array[] = ['id_opcao'=>30,'opcao'=>"Fortran"];
foreach($array as $k=>$v){
if(stristr($v['opcao'],$texto)){
$retorno[] = $v;
}
}
JAVASCRIPT
Este código é só copiar e colocar dentro do seu código javascript que está dentro arquivo onde contém o campo select. Nada pode ser alterado deste código.
function naytech_autocomplete(id){
////AQUI CRIA O CAMPO QUE SERÁ DIGITADO O TEXTO COM UM GIF LOAD CONCATENADO, LEMBRANDO DE COLOCAR O GIF NO CAMINHO CERTO INFORMADO NO IMG ABAIXO////////
function opcaoSelecionado(id,id_select){
////AQUI COLOCA NA TAG SELECT A OPCAO ESCOLHIDA. ESTE CAMPO FICA ESCONDIDO, POIS FICA APARECENDO SOMENTE O INPUT ONDE É DIGITADO O TEXTO DA PESQUISA, MAIS NA HORA DO SUBMIT O VALOR DA TAG SELECT É RECONHECIDO
var cd = $("li#li_"+id).attr("value");
$("#buscar-select").val(texto);
$("ul#buscar-select-list").hide().html("");
$("select#"+id_select).html('<option selected value="' +cd + '">' + texto + '</option>');
}<!-- FECHA A FUNÇÃO opcaoSelecionado-->
function criarListaAutoComplete(id_select){
setTimeout(function(){
var texto = $("#buscar-select").val();
var idSelect = $("#"+id_select).attr("id");
if (texto.length >= 3) { ////limita a busca na base a partir de 3 letras digitadas
$.ajax({
url: "listar-opcoes-select.php",
data: {texto: texto},
type:"post",
dataType:"json",
beforeSend:function (){$("#buscar-select").focus();$("img#loadList").show();},
complete:function(){$("img#loadList").hide();},
success: function (resp) {
////////// O RETORNO DO PHP TEM QUE SER UM ARRAY COM ESSES ÍNDICES, EXEMPLO: $array[] = array("id_opcao"=>1,"opcao"=>"Primeira opcao").
$("ul#buscar-select-list").hide().html("");
if(resp.length>0){
for (var i = 0; i < resp.length; i++) {
$("ul#buscar-select-list").append('<li class="buscar-select-list-li" id="li_'+i+'" onclick=opcaoSelecionado('+i+',"'+idSelect+'") style="background:#eee;cursor:pointer;margin-bottom:5px;margin-left:7px;margin-top:5px;padding:10px;margin:0;border-bottom:1px solid #fff" value="'+ resp[i].id_opcao +'">' + resp[i].opcao + '</li>');
}
$("ul#buscar-select-list").show();
$("ul#buscar-select-list li").mouseover(function(){
$(this).css({"background":"#ccc"})
}).mouseout(function(){
$(this).css({"background":"#eee"})
})
}
}
})
}else{
$("ul#buscar-select-list").hide().html("");
}
},100)
}<!-- FECHA A FUNÇÃO criarListaAutoComplete-->
Então é isso, é só copiar este código acima em azul nos seus respectivos lugares no seu projeto e seguir a descrição que vai dar tudo certo.
Se este código lhe ajudou deixe seu comentário.
Se ainda tiver qualquer dúvida deixe seu comentário.