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

嘿程序员,我已经从我的下面的function中删除了所有内容,只是针对我需要的帮助…

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

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

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

$('#searchinput').live('keyup',function() { reloadContent(); //execute load function }); 

任何建议表示赞赏

您可以在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)); }); 
 $('#searchinput').live('keyup',function() { window.setTimeout(function(){ reloadContent(); //execute load function },1000); }); 

这会延迟,但我认为你不仅需要延迟制作你想要的东西。