【问题标题】:Prevent posts while typing in a input [duplicate]在输入输入时阻止发帖[重复]
【发布时间】:2013-01-14 13:45:33
【问题描述】:

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

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

HTML:

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

JavaScript:

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

jsfiddle

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

【问题讨论】:

  • 您会注意到,如果您在帖子中包含您的代码,您会更快地获得帮助。
  • “我不必这样做”...是的,您可以这样做,因为我们不想通过链接来理解问题。此外,如果 jsfiddle 链接由于某种原因而关闭,您的问题将是不完整的(我承认这是一个相对较小的示例,即使没有它,您的问题也可能有意义)。你的问题越好,你得到的答案就越好。这意味着包括代码。

标签: javascript jquery


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    查看jQuery throttle / debounce plugin

    它完全符合你的要求

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

    【讨论】:

      猜你喜欢
      • 2018-04-20
      • 2012-02-04
      • 1970-01-01
      • 2020-07-26
      • 1970-01-01
      • 1970-01-01
      • 2018-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多