时间间隔后的键盘事件

时间:2008-12-20 04:43:45

标签: jquery ajax

我有这个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;
    });
});

2 个答案:

答案 0 :(得分:13)

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

可以这样应用:

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


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

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

以下是对所需参数的简短描述(它实际上需要一个参数,一个对象,并且它的属性用作输入参数):

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

对于此插件的实时演示,请查看Users Page

答案 1 :(得分:0)

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

(注意:两秒钟很长;))