我有一个用于搜索的输入。用户开始键入,并且在键入时,表中显示了许多与键入的字符串相关的结果。
我的HTML:
<input type="text" id="searchinput" onkeyup="Search()" placeholder="Search...">
我的Javascript函数:
function Search() {
var value = $("#searchinput").val().toLowerCase().trim();
if (value == '') {
$("div#results").html('');
} else {
$.ajax({
type: 'post',
url: 'getresults.php',
data: {
values: value
},
success: function(response) {
$("div#results").html(response);
}
});
}
}
如果用户快速键入搜索词,则用户将获得所需的结果。如果您缓慢键入,则会得到结果,几秒钟后,它可能会断裂并显示其他结果(也许是通过先前按下的键?)。
有什么想法吗?
答案 0 :(得分:3)
您可以尝试进行反跳,这只会在250毫秒不活动后触发请求。
$.debounce(250, function(e) {
console.log("It works!");
})
这是我引用的去抖动功能
http://benalman.com/code/projects/jquery-throttle-debounce/jquery.ba-throttle-debounce.js