Olá, amigo. tenho uma solução simples porém uso ASP, mas se você entender o conceito já ajuda. O idéia do código principal foi retirado do site: http://codigofonte.uol.com.br/codigo/js-dh...-com-javascript  --------------------------------------------------------- inicio arquivo autobusca.asp --------------------------------------------------------- <% Dim lojaDB set lojaDB = server.createobject ("adodb.connection") 	lojaDB.open " DRIVER={MySQL ODBC 5.1 Driver};database=database;server=server;uid=user;password=pass;option=3;"  produtos = "" i = 1 'esta consulta verifica o numero de linhas para inserção da vírgula na Array Set RSLINHAS = LojaDB.Execute("SELECT COUNT(DISTINCT nome) AS numlinhas FROM produtos") 	numlinhas = CInt(RSLINHAS("numlinhas")) Set RSLINHAS = Nothing 'esta consulta verifica os dados repetidos e monta apenas os nomes comuns (filtra os nomes repetidos) Set COMPRODUTO = LojaDB.Execute("SELECT DISTINCT nome FROM produtos") 	While NOT COMPRODUTO.EOF                'aqui é montada a Array, no caso produtos 		produtos = produtos & "'" & COMPRODUTO("nome") & "'"                 'aqui insere a vírgula para que a Araay tenho o formato correto " produtos="var01","var02","var03,..."varN" 		If i < numlinhas  Then 			produtos = produtos & "," 		End If 		COMPRODUTO.MoveNext 		i = i + 1 	Wend Set COMPRODUTO = Nothing  'a mesma descrição de cima, porém para clientes clientes = "" i = 1 Set RSLINHAS = LojaDB.Execute("SELECT COUNT(DISTINCT nome) AS numlinhas FROM clientes") 	numlinhas = CInt(RSLINHAS("numlinhas")) Set RSLINHAS = Nothing Set COMCLIENTE = LojaDB.Execute("SELECT DISTINCT nome FROM clientes") 	While NOT COMCLIENTE.EOF 		clientes = clientes & "'" & COMCLIENTE("nome") & "'" 		If i < numlinhas  Then 			clientes = clientes & "," 		End If 		COMCLIENTE.MoveNext 		i = i + 1 	Wend Set COMCLIENTE = Nothing %>  <script> //Aqui crio a Array propriamente dita, inserindo os dados da variável produtos e clientes, e quantas mais necessitar, realizando a consulta no BD e dando um nome específico(XXXXXXX). //var XXXXXXX = new Array(<%=XXXXXXX%>); var produtos = new Array(<%=produtos%>); var clientes = new Array(<%=clientes%>);  //o restante do código é montagem do selectbox para apresentação dos resultados da consulta/busca de acordo com os caracteres digitados.			 document.write('<style type="text/css">'+ 					  '#listHolder{position:absolute;border:1;}'+ 					  '.list{font-family:verdana;font-size:10;color:#000000;heigth:auto;}'+ 			 '<\/style>')  function autocomplete(obj,nStr) {  	var k = event.keyCode; 	var T = findPosY(obj); //top 	var L = findPosX(obj); //left 	var list = document.getElementById('listHolder');  	if(!list) { 		var list = document.createElement('DIV'); 		list.id = 'listHolder'; 		document.body.appendChild(list); 	} 	 	list.style.top=(T+obj.offsetHeight); 	list.style.left=L; 	list.style.display='none'; 	 	var txt=obj.value; 	 	if (txt) { 		var str='<select class="list"'+ 				'onclick="setOption(\''+obj.id+'\',this.options[this.selectedIndex].value)"'+ 				'onkeyup="if(event.keyCode==13){setOption(\''+obj.id+'\','+ 				'this.options[this.selectedIndex].value)};if(event.keyCode==27){'+ 				'document.getElementById(\'listHolder\').style.display=\'none\';'+ 				'document.getElementById(\''+obj.id+'\').focus()};" id="selector" size="6">' 		var match=false 		for(a=0;a<nStr.length;a++){ 		 			if(txt.toLowerCase()==nStr[a].toLowerCase().substring(0,txt.length)){ 				match=true 				str+=('<option value="'+nStr[a].replace(/\'/gi,'’')+'">'+nStr[a]+'</option>') 			} 		} 	 		str+='</select>' 		if(match){ 			list.innerHTML=str 			list.style.display='block' 			var sel=document.getElementById('selector') 			if(k=='40') { 			   sel.focus() 			} 		 			if(k=='13'){ 			   document.getElementById('listHolder').style.display='none' 			} 		} 	} }  function setOption(obj,val){  	var obj=document.getElementById(obj) 	 	obj.value=val; 	obj.focus() 	document.getElementById('listHolder').style.display='none' }  function findPosX(obj){ 	var curleft=0; 	if(obj.offsetParent) { 	 		while(obj.offsetParent){ 			curleft+=obj.offsetLeft 			obj=obj.offsetParent; 		} 	} else if(obj.x) 		curleft+=obj.x; 		return curleft; }  function findPosY(obj){ 	var curtop=0; 	if(obj.offsetParent){ 		while(obj.offsetParent){ 			curtop+=obj.offsetTop 			obj=obj.offsetParent; 		} 	} else if(obj.y) 		curtop+=obj.y; 		return curtop; } </script> <%      lojaDB.Close Set lojaDB = Nothing %> --------------------------------------------------------- fim arquivo autobusca.asp ---------------------------------------------------------  --------------------------------------------------------- inicio arquivo menu.asp --------------------------------------------------------- <!--#include file="autobusca.asp" -->  ' aqui você vai indicar qual Array quer consultar através da indicação> onkeyup="autocomplete(this,XXXXXXX);" onde XXXX, seria o nome da Array       Busca Produto<br />       <input name="campo" type="text" id="campo" size="16" onkeyup="autocomplete(this,produtos);"/>        Busca Cliente<br />       <input name="campo" type="text" id="campo" size="16" onkeyup="autocomplete(this,clientes);"/> --------------------------------------------------------- fim arquivo menu.asp ---------------------------------------------------------  Bastante simples, e sem ajax, consulta em tempo real, porém com Array montada logo no carregamento da página. Existem outros métodos também incluindo ajax, no meu caso utilizei este mesmo, pois meu BD é razoavelmente pequeno, então valeu a pena. Para bancos maiores utilize realmente AJAX. Mas tente aproveitar a idéia.  "Copiar não é difícil, o difícil é adaptar, desde que se entenda o conceito!!!" "O homem criativo não é só o que inventa, é também o que copia, mas tem capacidade suficiente para aperfeiçoar e retribuir!!!"  Att Paulinho.