我有一个输入字段作为过滤器。在每个keyup中,他调用一个函数来发布input.val()以在表中显示结果,这很好。但如果我输入一个名称“stackoverflow”,他将发布13次。我希望如果他在3秒内没有输入他发布的信息。
我认为有一个函数(不是默认函数)。我不想自动完成。
HTML:
<input type="text" id="filter" />
JavaScript的:
$(document).ready(function(){
$("#filter").keyup(function(){
console.log('POST');
});
});
我不想延迟,因为这只会“延迟”它。
答案 0 :(得分:2)
您可以使用本机Javascript函数clearTimeout和setTimeout来完成此任务。
$(document).ready(function(){
var filterTimeout = null;
$("#filter").keyup(function(){
if (filterTimeout != null)
window.clearTimeout(filterTimeout);
filterTimeout = window.setTimeout(function() { console.log('POST'); }, 3000);
});
});
答案 1 :(得分:0)
查看jQuery throttle / debounce plugin
它完全符合您的要求
$('input').keyup($.debounce(3000, function() { /* Post comes here */ }));