OnKeyUp JavaScript时间延迟?

时间:2009-09-04 22:09:20

标签: javascript delay timedelay

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

我有:

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

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

4 个答案:

答案 0 :(得分:35)

试试这个:

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

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

答案 1 :(得分: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 );"/>

尝试演示here

答案 2 :(得分:0)

真有用的帖子!

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

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

答案 3 :(得分:-2)

setTimeOut()将是那个;)

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

link text