如何在调用Live Keyup事件后延迟执行Javascript函数?

Tay*_*Mac 5 javascript jquery jquery-selectors

嘿程序员,我已经删除了下面我的功能中的所有内容,只是准确定位了我需要的帮助......

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

唯一的问题是,我的服务器正在超载,因为在调用该函数的每个keyup之后,keyup事件没有延迟.

在调用reloadContent函数之前,我需要一种方法来延迟,例如1秒.这样它就不会运行4次(当用户键入john时),但只有1次用户输入(john)后,假设它们可以输入超过1个字符/秒.

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

        reloadContent(); //execute load function

});
Run Code Online (Sandbox Code Playgroud)

任何建议表示赞赏

Fré*_*idi 6

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

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