我正在使用以下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 );
});
});
新想法:当我想到它时,问题是当函数运行时我无法继续在输入字段中写入。任何解决方案,我将不需要任何延迟功能。
答案 0 :(得分:13)
function instantSearch(){ ... }
var timer;
$('input').keyup(function(){
timer && clearTimeout(timer);
timer = setTimeout(instantSearch, 200);
});
答案 1 :(得分:0)
您的即时搜索功能是否发出AJAX请求以返回结果?这可能是将延迟设置为200毫秒并在1-2秒之后将响应恢复的差异。
答案 2 :(得分:0)
如果您正在使用keyup事件,则除非对每秒查询或类似事件有特定限制,否则不必指定延迟。
这里有一个相当简洁的演练:http://blog.comperiosearch.com/2012/06/make-an-instant-search-application-using-json-ajax-and-jquery/