你好再次网络大师:) 现在,我有一个新的愚蠢问题,我要求原谅我。我到处都读到了这个解决方案,但没有找到适合我的解决方案。
我有:
<input name="domain" type="text" id="domain" onKeyUp="javascript:chk_me();">
所有我要问的是如何在按下按钮后不进行检查,但之后说1000毫秒的键盘不活动?
答案 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);">