我有这个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;
});
});
答案 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事件传递时将被调用。
以下是对所需参数的简短描述(它实际上需要一个参数,一个对象,并且它的属性用作输入参数):
对于此插件的实时演示,请查看Users Page
答案 1 :(得分:0)
使用setTimeout
仅在按下键两秒后调用ajax方法,而不是在按下键时直接调用它。我不太熟悉JQuery的缺点,因为我还没有机会玩它,但它应该能够插入上面的方法。
(注意:两秒钟很长;))