2009-03-29 2 views
22

Ich habe ein Formular mit einer <input type=text /> und ich möchte eine Javascript-Funktion nach 5 Sekunden des letzten Tastendrucks aufrufen, und jedes Mal, wenn eine neue Taste gedrückt wird, sollte dieser Timer zurücksetzen und die Funktion erst nach 5 Sekunden aufrufen.Rufen Sie eine JavaScript-Funktion nach 5 Sekunden des letzten Tastendrucks

Wie kann ich das tun?

Ich benutze jQuery.

danke!

+0

Haben Sie die letzte Taste gedrückt bedeuten, wenn der Benutzer über das Eingabefeld zur Zeit aktiv? –

Antwort

54

So etwas sollte Ihnen den Einstieg:

var timeout; 
$('input[type=text]').keypress(function() { 
    if(timeout) { 
     clearTimeout(timeout); 
     timeout = null; 
    } 

    timeout = setTimeout(myFunction, 5000) 
}) 
+0

das ist super, danke! – Paulo

+0

Denken Sie daran, dass die Timeout-Funktion in Millisekunden funktioniert. Deshalb hat er 5000 benutzt. –

+4

Technisch ist die Einstellung auf Null überflüssig. – cletus

0

Obwohl es jQuery nicht verwenden, können Sie auch einen Blick auf die Entprellungsfunktion here beschrieben haben könnte.

Steve

4

Das ist großartig, aber denken Sie daran, dass Sie diesen Code nach den Dokumenten Lasten und nach der Funktion lädt ermöglichen, müssen die Zeitüberschreitung zu löschen. Hier

ist der vollständige Code:

var timeout; 
$(document).ready(function(){ 
    $('input[type=text]').keypress(function() { 
     if(timeout) { 
      clearTimeout(timeout); 
      timeout = null; 
     } 
     timeout = setTimeout(myFunction, 5000); 
    }); 
}); 

var myFunction = new function() { 
    alert('myFunction is running'); 
    clearTimeout(timeout); // this way will not run infinitely 
} 
Verwandte Themen