0

我有一个输入字段作为过滤器。在每次键入时,他都会调用一个函数来发布 input.val() 以在表格中显示结果,这很好用。但如果我输入一个名称“stackoverflow”,他将发布 13 次。如果他发布的 3 秒内没有任何输入,我想要那个。

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

HTML:

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

JavaScript:

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

jsfiddle

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

4

2 回答 2

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);
    });
 });
于 2013-01-14T13:50:41.633 回答
0

查看jQuery 油门/去抖动插件

它完全符合您的要求

$('input').keyup($.debounce(3000, function() { /* Post comes here */ }));
于 2013-01-14T13:50:00.240 回答