嗨,程序员,我从下面的函数中删除了所有内容,仅针对我需要的帮助...

调用keyup事件后,reloadContent函数将进行ajax调用以从数据库收集新数据。

唯一的问题是,我的服务器超载,因为每次键入键后都不会延迟键事件的延迟。

我需要一种方法,例如在reloadContent函数被调用之前延迟1秒。这样,它将假定用户可以键入多于1个字符/秒,但不会运行4次(当用户键入j o h n时),而是仅在用户键入(john)后1次。

$('#searchinput').live('keyup',function() {

        reloadContent(); //execute load function

});

任何建议表示赞赏

最佳答案

您可以在keyup处理程序中设置超时,并使用jQuery的data()工具将其ID与元素相关联。这样,如果在延迟用尽之前再次触发oj​​it_code事件,则可以清除现有超时并安排新的超时:

$("#searchinput").live("keyup", function() {
    var $this = $(this);
    var timerId = $this.data("timerId");
    if (timerId) {
        window.clearTimeout(timerId);
    }
    $this.data("timerId", window.setTimeout(reloadContent, 1000));
});

08-07 10:00