再次嗨网络大师 :) 现在,我有一个新的愚蠢问题,我请求原谅我。我到处阅读有关此解决方案的信息,但没有找到适合我的解决方案。
我有:
<input name="domain" type="text" id="domain" onKeyUp="javascript:chk_me();">
我要问的是如何在按下按钮后不检查,但在说 1000 毫秒的键盘不活动之后?
再次嗨网络大师 :) 现在,我有一个新的愚蠢问题,我请求原谅我。我到处阅读有关此解决方案的信息,但没有找到适合我的解决方案。
我有:
<input name="domain" type="text" id="domain" onKeyUp="javascript:chk_me();">
我要问的是如何在按下按钮后不检查,但在说 1000 毫秒的键盘不活动之后?
试试这个:
var timer;
function chk_me(){
clearTimeout(timer);
timer=setTimeout(function validate(){...},1000);
}
这样每按一次键,超时时间就会被删除并重新设置。
另一种没有全局变量的方法:
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 );"/>
在此处尝试演示。
很实用的帖子!
另一种没有全局变量的方法,使用函数属性:
function chk_me(){
if(typeof timer !== undefined){
clearTimeout(this.timer);
}
this.timer=setTimeout(function validate(){validate(...)},1000);
}
setTimeOut() 将是一个;)
<input name="domain" type="text" id="domain" onKeyUp="setTimeout('chk_me()',1000);">