Boa tarde, pessoal!
Utilizar onKeyUp para fazer chamadas Ajax é bem interessante, melhorando e muito a experiência do usuário com o sistema, de maneira que os resultados da pesquisa vão aparecendo na medida que ele pressiona as teclas no teclado. Porém, imagine, a cada tecla que o usuário pressiona é uma chamada Ajax na aplicação, o que pode reduzir em performance e aumentar a utilização de banda.
Sendo assim, uma opção é esperar o usuário parar de digitar por um tempinho para então pesquisar via Ajax. Pode parecer voltar no tempo, mas o intervalo é tão pequeno (na ordem de 500 milisegundos) que nem dá pra perceber direito. Além do mais nada impede que coloquemos 250 milisegundos ou menos. Para isso vamos usar as funções setTimeOut e clearInterval.
var interval = 0;
$(function()
{
$('#query').keyup(function()
{
// começa a contar o tempo
clearInterval(interval);
// 500ms após o usuário parar de digitar a função é chamada
interval = window.setTimeout(function(){
// sua chamada ajax e demais códigos
}, 500);
});
}
É isso aí pessoal! Espero ter sisdo claro! Até a próxima!