jquery JavaScript定时器,重新启动的关键了?

pdkcd3nj  于 11个月前  发布在  jQuery
关注(0)|答案(3)|浏览(123)

O,所以我有一个“现场搜索”ajax搜索,它目前运行一个sql搜索(通过ajax)对每个键了。
我更喜欢的是:

  • 在没有按下某个键例如800毫秒之后运行SQL搜索 *

  • 因此,我希望有一个在keyup时启动的计时器,如果计时器达到800ms,则调用ajax,如果发生新的keyup事件,则重新启动计时器 *

我该怎么做?

acruukt9

acruukt91#

(function () {

var theTimeout;

function doSearch() {
  // Do Search
};

$('#theField').bind('keyup', function () {
  clearTimeout(theTimeout);

  theTimeout = setTimeout(doSearch, 800);
});

}())

字符串

l3zydbqr

l3zydbqr2#

有一个很好的插件TypeWatch,你可以看看(IIRC StackOverflow在Users页面上使用了这个)。下面是一个使用示例:

$("#textId").typeWatch({ 
    highlight: true,
    wait: 800,
    captureLength: -1,
    callback: function() {
        // changed text
    }
});

字符串

r8uurelv

r8uurelv3#

我遇到了这个问题,我的解决方案是这样的:

var doAjax = 0
$("input#name").keyup(function(){
    doAjax++;
    setTimeout(function(){
        doAjax--;
        if(doAjax>=1){
           return;
        } 
        $.post("do_ajax", { ...

字符串
我不知道这是否是最好的解决方案,但它确实有效:)

相关问题