在最后一次按键5秒后调用javascript函数

时间:2009-03-29 00:16:57

标签: javascript jquery

我有一个带有<input type=text />的表单,我想在最后一次按键5秒后调用一个javascript函数,每次按下一个新键时,此计时器应该重置并且只在之后调用该函数5秒。

我该怎么做?

我正在使用jQuery。

谢谢!

3 个答案:

答案 0 :(得分:56)

这样的事情应该让你开始:

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

    timeout = setTimeout(myFunction, 5000)
})

答案 1 :(得分:4)

这很好,但请记住,您需要在文档加载后以及加载函数后启用此代码以清除超时。

以下是完整的代码:

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
	}
		
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>

答案 2 :(得分:0)

虽然它不使用jQuery,但你也可以看一下here描述的去抖动函数。

史蒂夫