我正在尝试创建一个使用ajax从PHP脚本中获取搜索结果的文本输入。基本上,目前脚本将每个字母1逐个发送给PHP,PHP必须在每个字母上查询数据库中的结果。
相反,我希望如果你在1秒内输入“Word”,它只是搜索整个“Word”,而不是搜索“W”,“Wo”,“Wor”,“Word” ”
我尝试使用window.SetTimetout,但这只是让搜索运行迟了2秒,但字母仍然是1比1发送。
$("#search").keyup(function(e) {
var keyword = $("#search").val();
window.setTimeout(function() {
$.ajax({
url: "GetItemList.php?search="+keyword,
success: function(result) {
$(".left").html(result);
}
});
},2000);
});
答案 0 :(得分:3)
var lastTimeout = null;
$("#search").keyup(function(e) {
var keyword = $("#search").val();
if (lastTimeout)
clearTimeout(lastTimeout)
lastTimeout = window.setTimeout(function() {
$.ajax({
url: "GetItemList.php?search="+keyword,
success: function(result) {
$(".left").html(result);
}
});
},2000);
});
答案 1 :(得分:2)
在创建新超时之前,您需要检查是否已激活超时。像这样:
var myTimeout = null;
$("#search").keyup(function(e) {
var keyword = $("#search").val();
if(myTimeout != null) {
myTimeout = window.setTimeout(function() {
$.ajax({
url: "GetItemList.php?search="+keyword,
success: function(result) {
$(".left").html(result);
myTimeout = null;
}
});
},2000);
}
});
这样,如果你要连续打字10秒钟,你最终会得到4或5个请求,每2秒左右一次。