【问题标题】:Call a javascript function after 5 sec of last key press最后一次按键 5 秒后调用 javascript 函数
【发布时间】:2019-10-02 23:56:33
【问题描述】:

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

我该怎么做?

我正在使用 jQuery。

谢谢!

【问题讨论】:

  • 您的意思是当用户当前输入字段处于活动状态时按下的最后一个键?

标签: javascript jquery


【解决方案1】:

这样的事情应该可以帮助您入门:

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

    timeout = setTimeout(myFunction, 5000)
})

【讨论】:

  • 请记住超时功能以毫秒为单位。这就是他使用 5000 的原因。
  • 从技术上讲,设置为 null 是多余的。
  • 它在不使超时为空的情况下工作..我不明白使它为空的要求是什么@Crescent Fresh
  • 我真的很想谢谢你!简单但非常有效。
【解决方案2】:

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

完整代码如下:

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>

【讨论】:

    【解决方案3】:

    虽然它不使用 jQuery,但你也可以看看here 描述的去抖动功能。

    史蒂夫

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-17
      • 1970-01-01
      • 2018-05-17
      • 1970-01-01
      • 1970-01-01
      • 2015-06-22
      • 1970-01-01
      相关资源
      最近更新 更多