时间间隔后的键盘事件

use*_*947 4 ajax jquery

我有这个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;
    });
});
Run Code Online (Sandbox Code Playgroud)

And*_*ech 13

您可以使用StackOverflow用于其用户页面的jQuery插件; 它被称为TypeWatch

它可以像这样应用:

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


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

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

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

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

有关此插件的现场演示,请查看用户页面