在键入输入时阻止发布

时间:2013-01-14 13:45:33

标签: javascript jquery

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

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

HTML:

<input type="text" id="filter" />

JavaScript的:

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

jsfiddle

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

2 个答案:

答案 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 */ }));