Per quanto ne so, l'evento viene innescato non appena rilasci il tasto. Quindi, per "ritardarlo", credo che l'unica cosa da fare sarebbe chiamare la funzione che fa la chiamata ajax con un setTimeOut, più o meno cisì:
// Dichiara un variabile globale
var x = null;
// Questo è il tuo evento
elemento.onkeyup=funzione;
function funzione() {
// Annulla un eventuale timeout impostato in precedenza
if (x) {
clearTimeOut(x);
}
// Imposta il nuovo timeout per invocare la funzione che fa la chiamata ajax
x = window.setTimeOut("callAjax()", 2000);
}
Quando si rilascia il tasto:
- cancella il precedente timeout (generato da una eventuale precedente digitazione);
- imposta il nuovo timeout - se nessun tasto viene premuto nell'intervallo di tempo (nell'esempio 2 secondi, cambialo a piacere) viene chiamata la funzione che fa la chiamata ajax.
Dovrebbe funzionare...