Ir para conteúdo

POWERED BY:

Arquivado

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

Adelar Tiemann jr

[Resolvido] Problemas de lentidão com o autocompletar

Recommended Posts

Olá,

 

Eu estou com um problema com um autocompletar que precisei desenvolver aqui na empresa.

 

Eu começo a contar a partir da 3 letra que meu usuário digitar, porem ele sempre faz a consulta... Deixa eu dar um exemplo para explicar melhor.

 

Ele digita "Adelar" de uma vez só bem rápido, o sistema faz 4 consultar ao banco quando precisária fazer apenas uma,

 

as Consutas:

"Ade"

"Adel"

"Adela"

"Adelar"

 

Ai gostaria de saber como fazer com que um evento fosse disparado apenas 1 segundo depois de parar de digitar como posso fazer isso??

 

Se não consegui me expressar direito avisem ai eu tento melhorar

 

Vlw ae

Compartilhar este post


Link para o post
Compartilhar em outros sites

É uma otima questao, voce deve esta usando o evento "onkeypress" para chamar uma função, quando a proxima letra for pressionada, a funçao e concelada e começa tudo de novo, entao coloca um setTimeout() na usa funçao

 

function tal(){
   setTimeout(function(){
	  aqui o codigo de busca
   },1000);
}

isso diz que o codigo sera executado 1 segundo apos ser chamada, mas so de sugestao coloca 2 segundos

no caso o tempo ali é 1000 porque e contado em milesimos de segundo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo eu já hávia tentendo com setInterval()...

 

VOu tentar colocar setTimeout() para ver se ele faz a mesma coisa ou se vai cancelando mesmo...

 

 

 

Vlw ae

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei utilizar o setTimeout(), porem ocorreu o mesmo problema...

 

Ele não cancelou a primeira ação quando teve a segunda ele simplesmente colocou ela na pilha.

ai quando passou o tempo ele executou todas elas

 

Foi isso que eu fiz:

setTimeout("alert('OI')",1000);

 

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara realmente é um bom post, já montei sistemas de sugestao, mas por ser pequenos não acontecia isso, acontecia mas nao tinha muita importancia, mas realmente num sitema um pouco maior, com varios acessos realmente é um problema.

Tentei aqui com setInterval e setTimeout, mas a solução foi o ultimo, segue o codigo comentado abaixo

 

// define uma variavel contendo um array vazio
array=[];
// chama a função passando como parametro o texto digitado
function sugestao(texto){
// adiciona o valor ao array
array.push(texto);
// define a variavel num com o .length do array
var num=array.length;
// executa o codigo dentro de 1 segundo
setTimeout(function(){
// verifica se num é igual ao numero de indices do array
// aqui ocorre a magina, no momento que voce digita, por exemplo a variavel num = 1
// se em 1 segundo voce pressionar 4 teclas entao .length sera 5 e sera diferente do num declarado no setTimeout() que sera 1, entao no caso a funçao ajax nao sera chamada 
if(num==array.length){
// esse alert aqui é so pra mostrar que funciona
	alert('hantaro');
// seu codigo ajax
		}
	},1000);
	
}

Testado em FF3.5 e IE8

Se der erro avisa ai, se der certo tbm, ou se voce achar uma solução mais doida

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

Agora sim hehe

 

eu hávia feito a seguinte coisa:

 

<html>
<head>
   <script language="javascript">
   function teste(){
	  setTimeout(function(){
		 alert("adelarcubs");
	  },1000);
   }
   </script>
</head>
<body>
   <input type="text" id="nome" onkeypress="teste();"/>
</body>
</html>

o que faz a diferença é o teu IF

 

agora que eu intendi hehe

 

RESOLVIDO

 

Vlw aew

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.