2

我将以下 javascript 用于我的即时搜索功能(以检测访问者何时停止写作,因此该功能不会在每个键盘上运行)。

它有效,但延迟超过 1000 毫秒。即使我将其设置为 200 毫秒,在即时搜索功能运行之前也会有 1-2 秒的延迟。

是否有更好/更快的方法来检测访问者何时停止输入输入(如果有任何区别,我只需要它用于 Internet Explorer)。

$(document).ready(function(){

var delay = (function(){
var timer = 0;
return function(callback, ms){
clearTimeout (timer);
timer = setTimeout(callback, ms);
};
})();

$('input').keyup(function() {
delay(function(){
//instant search function here
}, 1000 );
});

});

新想法:当我想到它时,问题是当函数运行时我无法继续在输入字段中写入。任何解决方案,我都不需要任何延迟功能。

4

3 回答 3

13
function instantSearch(){ ... }

var timer;
$('input').keyup(function(){
   timer && clearTimeout(timer);
   timer = setTimeout(instantSearch, 200);
});
于 2011-03-21T21:41:36.010 回答
0

您的即时搜索功能是否发出 AJAX 请求以返回结果?这可能是将延迟设置为 200 毫秒和在 1-2 秒后回复您的响应之间的区别。

于 2011-03-21T21:36:31.970 回答
0

如果您使用的是 keyup 事件,则无需指定延迟,除非每秒查询数或类似内容有特定限制。

这里有一个相当简洁的演练:http: //blog.comperiosearch.com/2012/06/make-an-instant-search-application-using-json-ajax-and-jquery/

于 2012-06-27T10:57:37.993 回答