OnKeyUp JavaScript时间延迟?

Spo*_*onk 25 javascript timedelay delay

嗨再次网站大师:)现在,我有一个新的愚蠢的问题,我要求原谅我.我到处都读到了这个解决方案,但没有找到适合我的解决方案.

我有:

<input name="domain" type="text" id="domain" onKeyUp="javascript:chk_me();">
Run Code Online (Sandbox Code Playgroud)

我要问的是如何在按下按钮后不进行检查,但之后说1000毫秒的键盘不活动?

mck*_*k89 37

试试这个:

var timer;
function chk_me(){
   clearTimeout(timer);
   timer=setTimeout(function validate(){...},1000);
}
Run Code Online (Sandbox Code Playgroud)

这样,每次按下一个键,超时都将被删除并再次设置.

  • 我认为`var timer`需要在函数体之外 (2认同)

CMS*_*CMS 16

另一种没有全局变量的方法:

var typewatch = function(){
    var timer = 0;
    return function(callback, ms){
        clearTimeout (timer);
        timer = setTimeout(callback, ms);
    }  
}();
Run Code Online (Sandbox Code Playgroud)

用法:

通过JavaScript附加事件:

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

或者使用内联事件处理程序(不是那么多推荐),就像在示例中一样:

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

在这里尝试一下演示.