Die oben gewählte Antwort funktioniert nicht.
Da typingTimer gelegentlich mehrmals eingestellt wird (zweimaliges Drücken der Taste, bevor der Keydown für schnelle Tipper usw. ausgelöst wird), wird es nicht richtig gelöscht.
Die folgende Lösung löst dieses Problem und ruft X Sekunden nach Abschluss des OP auf. Außerdem ist die redundante Keydown-Funktion nicht mehr erforderlich. Ich habe auch eine Prüfung hinzugefügt, damit Ihr Funktionsaufruf nicht erfolgt, wenn Ihre Eingabe leer ist.
//setup before functions
var typingTimer; //timer identifier
var doneTypingInterval = 5000; //time in ms (5 seconds)
//on keyup, start the countdown
$('#myInput').keyup(function(){
clearTimeout(typingTimer);
if ($('#myInput').val()) {
typingTimer = setTimeout(doneTyping, doneTypingInterval);
}
});
//user is "finished typing," do something
function doneTyping () {
//do something
}
Und der gleiche Code in der Vanille-JavaScript-Lösung:
//setup before functions
let typingTimer; //timer identifier
let doneTypingInterval = 5000; //time in ms (5 seconds)
let myInput = document.getElementById('myInput');
//on keyup, start the countdown
myInput.addEventListener('keyup', () => {
clearTimeout(typingTimer);
if (myInput.value) {
typingTimer = setTimeout(doneTyping, doneTypingInterval);
}
});
//user is "finished typing," do something
function doneTyping () {
//do something
}
Diese Lösung verwendet zwar ES6, ist hier jedoch nicht erforderlich. Ersetzen Sie einfach let
mit var
und die Pfeil - Funktion mit einer regulären Funktion.