O,所以我有一个'实时搜索'ajax搜索,它目前在每个密钥上运行一个sql搜索(通过ajax)。
我更喜欢的是:
在没有按下一个键之后运行一个sql搜索,比如800毫秒
所以我想要一个在按键启动时启动的计时器, 如果计时器达到800毫秒,则调用ajax, 如果发生新的键盘事件,则重新启动计时器
我该怎么做?
答案 0 :(得分:5)
(function () {
var theTimeout;
function doSearch() {
// Do Search
};
$('#theField').bind('keyup', function () {
clearTimeout(theTimeout);
theTimeout = setTimeout(doSearch, 800);
});
}())
答案 1 :(得分:2)
你可以看一下优秀的插件TypeWatch(IIRC StackOverflow在Users页面使用它)。以下是一个示例用法:
$("#textId").typeWatch({
highlight: true,
wait: 800,
captureLength: -1,
callback: function() {
// changed text
}
});
答案 2 :(得分:0)
我有这个问题,我的解决方案就是这样:
var doAjax = 0
$("input#name").keyup(function(){
doAjax++;
setTimeout(function(){
doAjax--;
if(doAjax>=1){
return;
}
$.post("do_ajax", { ...
不知道它是否是最好的解决方案,但它有效:)