我正在尝试创建一个搜索,您将文本输入到文本字段,并且onkeyup将触发一个功能,将该字段的值发送到页面,并将结果返回到div容器。我遇到的问题是,当有人打字时,有一个可怕的滞后。我想,发生了什么事情是试图搜索输入的每一封信,然后对每个请求进行搜索。我如何做到这一点,如果我输入框,等待1/2秒(500),如果没有输入,然后执行ajax搜索,但如果在那个时间框架另一个字母出现,不要甚至麻烦与ajax请求。我一直在捣毁我的头,不能弄清楚。所有的帮助是赞赏!
// fired off on keyup
function findMember(s) {
if(s.length>=3)
$('#searchResults').load('/search.asp?s='+s);
}
这样做会清除每次按下的超时时间,所以如果1/2秒没有通过该功能,那么再次设置一个定时器500ms。就是这样,没有必要加载一个大图书馆..
$(document).ready(function() {
var timeoutID = null;
function findMember(str) {
console.log('search: ' + str);
}
$('#target').keyup(function(e) {
clearTimeout(timeoutID);
timeoutID = setTimeout(findMember.bind(undefined,e.target.value),500);
});
});
演示:https://jsfiddle.net/zu2L8f0o/