2011-01-30 6 views
5

Estoy construyendo un autocompletar como script para las entradas de texto. Para evitar múltiples llamadas ajax innecesarias, me gustaría iniciar llamadas ajax solo después de que el usuario dejó de escribir texto durante 1 segundo. De esa manera, ahorraré algunas llamadas generales para cada tecla presionada. ¿Cómo puedo lograr esto usando jQuery?Retardo de la llamada ajax en la entrada de clave en jQuery

Gracias,

Joel

+0

como referencia, o para que no reinvente la rueda, el complemento de autocompletar de jqueryui es excelente, y tiene esta característica exacta (es por supuesto opcional, y cuando está en uso, puede establecer el retraso) ... – davin

Respuesta

2

Puede intentar algo como esto. Aún no estaba jugando con los de arriba. Solo usando js simples.

var keyUpTime = 1000; // 1 sec 
var keyUpTimeout = null; 
$('input[type=text]').keyup(function(e) { 
    clearTimeout(keyUpTimeout); 
    keyUpTimeout = setTimeout(function() { sendAjax(); }, keyUpTime); 
}); 
function sendAjax() { 
    alert('Send it!'); 
} 
+4

Está contaminando el alcance global con 'keyUpTime' y' keyUpTimeout' – ThiefMaster

+0

Los eventos clave no se activarán si hace clic derecho y selecciona Pegar en el menú contextual. – Fred

2

Hay otro plugin jquery para esto. Funciona bien para mí a link

Cuestiones relacionadas