OnKeyUp JavaScript Time Delay?

Hi Again Masters of the Web 🙂 Maintenant, j'ai une nouvelle question stupide, et je demande à me pardonner. J'ai lu partout sur cette solution, mais je n'ai pas trouvé celui qui fonctionne pour moi.

J'ai:

<input name="domain" type="text" id="domain" onKeyUp="javascript:chk_me();"> 

Tout ce que je demande est de savoir comment faire pour ne pas vérifier après avoir appuyé sur un bouton, mais après avoir déclaré 1000 milles d'secondes d'inactivité du clavier?

Essaye ça:

 var timer; function chk_me(){ clearTimeout(timer); timer=setTimeout(function validate(){...},1000); } 

De cette façon, chaque fois que vous appuyez sur une touche, le délai d'attente sera supprimé et le réglage à nouveau.

Une autre approche, sans globaux:

 var typewatch = function(){ var timer = 0; return function(callback, ms){ clearTimeout (timer); timer = setTimeout(callback, ms); } }(); 

Usage:

Fixation de l'événement via JavaScript:

 window.onload = function () { document.getElementById('domain').onkeyup = function() { typewatch(function(){alert('Time elapsed!');}, 1000 ); }; }; 

Ou en utilisant un gestionnaire d'événements en ligne ( pas trop recommandé ) comme vous l'avez dans votre exemple:

 <input type="text" name="domain" id="domain" onKeyUp="typewatch(function(){alert('Time elapsed!');}, 1000 );"/> 

Essayez une démonstration ici .

Publié vraiment utile!

Une autre approche sans globals, utilisant les propriétés de la fonction:

 function chk_me(){ if(typeof timer !== undefined){ clearTimeout(this.timer); } this.timer=setTimeout(function validate(){validate(...)},1000); } 

SetTimeOut () serait celui;)

 <input name="domain" type="text" id="domain" onKeyUp="setTimeout('chk_me()',1000);"> 

Lien texte