28

再次嗨网络大师 :) 现在,我有一个新的愚蠢问题,我请求原谅我。我到处阅读有关此解决方案的信息,但没有找到适合我的解决方案。

我有:

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

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

4

4 回答 4

41

试试这个:

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

这样每按一次键,超时时间就会被删除并重新设置。

于 2009-09-04T22:14:34.437 回答
16

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

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

用法:

通过 JavaScript 附加事件:

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

或者使用示例中的内联事件处理程序(不太推荐):

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

在此处尝试演示。

于 2009-09-04T22:40:31.607 回答
1

很实用的帖子!

另一种没有全局变量的方法,使用函数属性:

function chk_me(){
   if(typeof timer !== undefined){
     clearTimeout(this.timer);
   }
   this.timer=setTimeout(function validate(){validate(...)},1000);
}
于 2017-01-16T14:17:56.260 回答
-3

setTimeOut() 将是一个;)

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

链接文本

于 2009-09-04T22:14:34.403 回答