在输入时防止帖子

Prevent posts while typing in a input

本文关键字:输入      更新时间:2023-09-26

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

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

HTML:

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

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

jsfiddle

我不想要延迟,因为那只会"延迟"它

你可以使用原生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);
    });
 });

查看jQuery throttle/debounce插件

它完全是你想要的

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