嗨,程序员,我从下面的函数中删除了所有内容,仅针对我需要的帮助...
调用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与元素相关联。这样,如果在延迟用尽之前再次触发ojit_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));
});