Javascript 定时器在按键时重新启动?

问题描述 投票:0回答:3

O,所以我有一个“实时搜索”ajax 搜索,它当前在每个键上运行 sql 搜索(通过 ajax)。

我更喜欢的是:

在未按下某个键(例如 800 毫秒)后运行 sql 搜索

.

所以我想要一个在按键时启动的计时器, 如果计时器达到 800ms,则调用 ajax, 如果发生新的按键事件,计时器将重新启动

我该怎么做?

javascript jquery ajax
3个回答
5
投票
(function () {

var theTimeout;

function doSearch() {
  // Do Search
};

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

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

}())

2
投票

有一个很棒的插件 TypeWatch,您可以看一下(IIRC StackOverflow 将其用于 Users 页面)。这是一个示例用法:

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

0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.