【问题标题】:Keyup Event After a Time Interval时间间隔后的按键事件
【发布时间】:2008-12-20 04:43:45
【问题描述】:

我有这个 jQuery 代码,它在 keyup 事件上查询 API(通过 keyterms.php)。它按原样工作,但我试图弄清楚如何实现“暂停”,可以这么说,以便它只会在最后一次键入后的一定时间(比如 2 秒)后进行查询。任何帮助都感激不尽。谢谢!

$(document).ready(function() {
    $('#loading').hide();
    $('#q').keyup(function(){
      $('#loading').show();
      $.post("keyterms.php", {
        q: $('#q').val()
      }, function(response){
        $('#qResult').fadeOut();
        setTimeout("finishAjax('qResult', '"+escape(response)+"')", 400);
      });
        return false;
    });
});

【问题讨论】:

    标签: jquery ajax


    【解决方案1】:

    您可以使用 StackOverflow 用于其 Users Page 的 jQuery 插件;它叫TypeWatch

    可以这样应用:

    <input type="text" id="tb" />
    
    
    <script>
    $("#tb").typeWatch({ highlight: true, wait: 500, captureLength: -1, callback: finished });
    </script>
    

    在这种情况下,finished 是一个回调函数(一个引用),当输入的时间量(在这种情况下,500 毫秒)从最后一个 keyUp 事件过去时将被调用。

    这里简单描述一下它所接受的参数(它实际上接受一个参数,一个对象,它的属性被用作输入参数):

    • highlight:美学,确定文本框获得焦点时是否应突出显示文本。默认
    • wait:插件认为输入完成之前等待的毫秒数。默认 750
    • captureLength:允许事件触发之前所需的最少字符数。默认2
    • 回调: 用户“完成”输入后回调的函数。默认无效

    如需此插件的现场演示,请查看Users Page

    【讨论】:

      【解决方案2】:

      使用setTimeout只在按键两秒后调用ajax方法,而不是在按键时直接调用。我对 JQuery 的弱点不太熟悉,因为我还没有机会使用它,但它应该能够插入到您上面的方法中。

      (注意:两秒是相当长的时间;))

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-24
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        • 2018-02-23
        • 1970-01-01
        相关资源
        最近更新 更多