我有用户在打字时进行 ajax 调用。问题是它会对输入的每个字母进行调用,所以我设置超时如下:
$(input).live('keyup', function(e){
setTimeout(function(){
var xx = $(input).val();
doSearch(xx);
}, 400);
});
它会等待 400 毫秒,但随后会在每次按键时执行。我怎样才能改变这个,让ajax在最后输入的字母后大约400毫秒只调用“一次”?
(我过去使用过“延迟”,但这对我的脚本根本不起作用......)
timer = 0;
function mySearch (){
var xx = $(input).val();
doSearch(xx);
}
$(input).live('keyup', function(e){
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(mySearch, 400);
});
最好将函数移动到命名函数并多次调用它,因为否则您将在每个 keyup 上创建另一个 lambda 函数,这是不必要的且相对昂贵
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)