Otra solución podría ser que hicieras un timeout. Es decir, a los X segundos de que el usuario deje de escribir creas la petición. Yo lo suelo usar para comprobar formularios mientras el usuario escribe. Por ejemplo, la función esperar esperará 2 segundos antes de ejecutar la función "peticion()", y si se vuelve a llamar en menos de ese lapso de tiempo se reseteará y volverá a esperar 2 segundos más:
Código:
var i = 0;
var timeout;
var esperar = function(){
if(i != 0){
clearTimeout(timeout);
}
timeout = setTimeout(peticion(), 2000);
i = 1;
}
var peticion = function(){
// Crear petición AJAX...
[...]
i = 0;
}
Código HTML:
<input [...] onKeyUp="esperar();" />