键入输入时防止发布

我有一个输入字段作为filter。 在每个keyup中,他调用一个函数来发布input.val()以在表中显示结果,这很好。 但如果我输入一个名称“stackoverflow”,他将发布13次。 我希望如果他在3秒内没有输入他发布的内容。

我认为有一个函数(不是默认函数)。 而且我不想自动完成。

HTML:

 

JavaScript的:

 $(document).ready(function(){ $("#filter").keyup(function(){ console.log('POST'); }); }); 

的jsfiddle

我不想延迟,因为这只会“延迟”它。

查看jQuery throttle / debounce插件

它完全符合你的要求

 $('input').keyup($.debounce(3000, function() { /* Post comes here */ })); 

您可以使用本机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); }); });