2008-12-20 44 views
4

我有这个jQuery代码在keyup事件上(通过keyterms.php)查询API。它的工作原理是这样的,但我试图找出如何实现“暂停”,以便在最后一次安装后仅在特定时间(例如2秒)之后执行查询。任何帮助都感激不尽。谢谢!在一段时间间隔后的Keyup事件

$(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; 
    }); 
}); 

回答

13

您可以使用StackOverflow上使用的jQuery插件的Users Page;这就是所谓的TypeWatch

它可以像这样被应用:

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


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

凡在这种情况下,finished是一个回调函数(基准),将被调用时的输入的时间(该量在这种情况下, 500毫秒)从最后一次keyUp事件传递。

这里是它需要的参数的简短描述(它实际上有一个参数,一个对象,它的属性被用作输入参数):

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

这个插件的现场演示,检查出Users Page

0

使用setTimeout只调用键被按下两秒后,而不是调用它直接当按下键的AJAX方法。我不太熟悉JQuery的弱点,因为我还没有机会玩它,但它应该可以插入到上面的方法中。

(注:两秒一个相当长的时间;))

相关问题