Ir para conteúdo

POWERED BY:

Arquivado

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

Kaayá Pezzuti

setTimeout + ajax +php

Recommended Posts

Olá pessoal estou com uma duvida que talvez seje simples

 

estou usando o setTimeout em uma pesquisa ou seja ( sabe como no google quando vc começa a digitar a sua pesquisa e automaticamente sem que vc precise digitar enter ela ja vai aparecendo conforme voce digita as letras?)

 

estou fzendo isso com o setTimeout:

 

function vai(){
if(procura.value.length > 0){
buscarr();
}
}
setInterval(vai,100);
apartir do momento em que a pessoa digita uma letra ele ja executa o ajax procurando por ela e conforme vai escrevendo vai aparecendo os resultados.
isso funciona, mas gostaria de saber se é correto usar esse metodo ou existe outro método de se fazer isso, ou se isso quando for o caso de uma pesquisa gigante no caso vamos supor 50,000 usuarios daria algum problema ou bug.
espero que tenham entendido a duvida!
abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode usar o jQuery keypress() em vez de setInterval, porque o setInterval diminui o desempenho da página considerando que ele chama a função toda hora desnecessariamente.

 

Por exemplo:

 

HTML

<form id="busca" method="post" action="" >
    <input id="procura" type="text" name="procura" />
    <input type="submit" value="Buscar" />
</form>

 

jQuery

$(document).ready(function() {
    $( "#procura" ).keypress(function() {
        buscarr();
    });
});

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Você pode usar o jQuery keypress() em vez de setInterval, porque o setInterval diminui o desempenho da página considerando que ele chama a função toda hora desnecessariamente.

 

Por exemplo:

 

HTML

       

jQuery

$(document).ready(function() {    $( "#procura" ).keypress(function() {        buscarr();    });});

quando usso esse metodo funciona perfeito, não sabia que podia usar esse método também, mas tem um porem

 

no meu caso quando começa a digitar vai aparecendo embaixo o resultado com o ajax e com o keypress tb,

mas quando eu apago tudo e deixo o campo vazio com o ajax eu consegui fazer com que ele oculte o campo da resposta

e ja com o keypress eu não consigo porque ele envia a requisição apartir do momento que eu aperto algum botão e não quando o campo esta vazio?

 

MEU CODIGO ESTA ASSIM

 

function vai(){
if(procura.value.length > 0){
    document.getElementById("respostaBusca").style.display="block";

    buscaAJAX();
    
}else{
    document.getElementById("respostaBusca").style.display="none";
        }
}
setInterval(vai,100);

 

 

 

com o onkey press ficaria assim

 

 

procura.onkeypress = function(){
  busca();
}

 

 

 

mas e quando o campo estiver vazio? como eu faria para ocultar a div? igual no codigo q fiz com setInterva?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso acontece porque o evento keypress identifica somente teclas correspondentes a caracteres reais.

Pra funcionar do jeito que você precisa, troque o keypress para keydown (esse identifica QUALQUER tecla apertada, até o botão backspace, de apagar o texto) e então faça a condição pra ver se o input está vazio para esconder as sugestões.

 

Se não tiver entendido comenta, se é o que você queria, da um Joinha ai =] Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso acontece porque o evento keypress identifica somente teclas correspondentes a caracteres reais.

Pra funcionar do jeito que você precisa, troque o keypress para keydown (esse identifica QUALQUER tecla apertada, até o botão backspace, de apagar o texto) e então faça a condição pra ver se o input está vazio para esconder as sugestões.

 

Se não tiver entendido comenta, se é o que você queria, da um Joinha ai =] Abraço.

 

é seria exatamente isso, quando eu faço o codigo ele vai certinho tb mas tem o problema na hora da condição

 

procura.onkeydown = function(){
	if(procura.value == ""){
		document.getElementById("respostaBusca").style.display="none";
		}else{
			buscar();
			}
	
	}

a condição esta certa.. mas ele não apaga a resposta pq sera?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque a condição


if(procura.value == ""){

Por


if(procura.value.length <= 0 ){

 

Se mesmo assim não der cernto, me mande aqui o código em que você faz a instancia do objeto "procura" por favor.

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.