Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

sdvivi

Como faço esse auto completar?

Recommended Posts

Como faço para adaptar esse codigo de forma que ele complete com dados vindos dos banco de dados estou usando php /mysql...

 

Tentei criar um array e printar depois mais não deu certo se alguém puder me ajudar..

 

 

<script>
names = new Array('cleber');
function autocomplete(n,ac_array){
if (n.value == "") return 0;
if (event.keyCode == 8 && n.backspace){
n.value = n.value.substr(0,n.value.length-1);
n.backspace = false;
}

var r = n.createTextRange();
tmp= n.value;
if (tmp == "")return 0;
for (z=0;z<ac_array.length;z++){
tmp2 = ac_array[z];
count = 0;
for (i = 0;i<tmp.length;i++){
if (tmp2.charAt(i) == tmp.charAt(i)){
count++
}
}
if (count == tmp.length){
diff = tmp2.length - tmp.length;
if (diff <= 0) break;
kap = "";
for (i=0;i<tmp2.length;i++){
if (i >= tmp.length) kap += tmp2.charAt(i);
}
n.backspace = true;
r.text += kap;
r.findText(kap,diff*-2);
r.select();
return 0;
}
}
n.backspace = false;
return 0;
}
</script>
<BODY>
<input name="local" type="text" id="local" class='textbox' title="Opening" backspace='false' onkeyup="autocomplete(this,names)" size="60">


</BODY>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depende do browser que você está testando.

Da forma como está seu código ele só serve para o IE, por causa do event.keyCode.

Para resolver você tem que utilizar também o event.which. É só fazer um if para verifica qual utilizar. Ex.:

if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;
Outra coisa é o evento. O script precisa conhecer (não sei se esse é o termo correto galera! heheeh) o evento, então você precisa especificá-lo na função. Isso pode ser de duas formas:

1 - Pelo parâmetro da função;

2 - Especificando na função: if (!e) var e = window.event (eu utilizo essa).

 

Então tente utilizar seu script assim:

...
function autocomplete(n,ac_array){
   if (!e) var e = window.event;
   var code = (e.keyCode)?e.keyCode:e.which;

   if (n.value == "") return 0;
   if (code == 8 && n.backspace){
   n.value = n.value.substr(0,n.value.length-1);
   n.backspace = false;
}
...

Qualquer coisa gritæ!

 

ABRAX!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depende do browser que você está testando.

Da forma como está seu código ele só serve para o IE, por causa do event.keyCode.

Para resolver você tem que utilizar também o event.which. É só fazer um if para verifica qual utilizar. Ex.:

if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;
Outra coisa é o evento. O script precisa conhecer (não sei se esse é o termo correto galera! heheeh) o evento, então você precisa especificá-lo na função. Isso pode ser de duas formas:

1 - Pelo parâmetro da função;

2 - Especificando na função: if (!e) var e = window.event (eu utilizo essa).

 

Então tente utilizar seu script assim:

...
function autocomplete(n,ac_array){
   if (!e) var e = window.event;
   var code = (e.keyCode)?e.keyCode:e.which;

   if (n.value == "") return 0;
   if (code == 8 && n.backspace){
   n.value = n.value.substr(0,n.value.length-1);
   n.backspace = false;
}
...

Qualquer coisa gritæ!

 

ABRAX!!

Valeu pelas informações...

Só que preciso de mais uma coisinha...

Preciso que esse array :

names = new Array('cleber');

Receba as informações vindas de um banco de dados...

tentei algo do tipo:

 

$meus_arrays = array();
$sql="select * from tb_nome";
$resultado=mysql_query($sql) or die (mysql_error());
while($pegar=mysql_fetch_array($resultado))
{
$meus_arrays[] = $pegar['numero'];
}

<script>
var names= new Array("<? print ($meus_arrays); ?>");

Mas não deu certo, o que acha???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Manda printar na tela o $meus_arrays para ver o que ele está trazendo. Seu código aparentemente está correto.

 

abrax!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aew

 

Cara para isso você precisa usar AJAX.

 

Eu já fiz algo assim relativamente sussa

 

quando eu estiver em casa eu tento fazer esse post para você :D

 

Espero que possa esperar

 

vlw ae

Compartilhar este post


Link para o post
Compartilhar em outros sites

nem precisa de ajax! Da forma que ele fez está correto! O problema é que o PHP não está montando corretamente o array pra ele. Por isso pedi para "printar"... pra gente ver o que está acontecendo!

 

Abrax!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.