我遇到的问题是一个搜索函数,它应该调用我的doSearch()
-用户在我的系统中停止输入至少 100 毫秒后的方法$("input#q)
field.
我试图通过使用这个逻辑来实现这一点answer https://stackoverflow.com/a/4029518/982002,但我坚持不知道应该在哪里设置/取消设置setInterval()
这增加了idleTime
.
var idleTime = 0;
$("input#q").keyup(function() {
idleTime = 0;
idleInterval = setInterval(function() {
idleTimeIncrement();
}, 25);
});
function idleTimeIncrement() {
idleTime += 25;
if (idleTime >= 100) {
doSearch($("input#q").val());
}
}
我在 Firebug 控制台中遇到的错误如下:
太多的递归。
所以我想我的代码中有一个无限循环......;-)
当您开始新的计时器时,您需要重置计时器。这就是我要做的:
var timer = null;
$('input#q').keyup(function() {
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(function() {
doSearch($('input#q').val())
}, 100);
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)