我正在使用Turbolinks.visit
行动,通过$(document).on("input");
...
html
<form id="mainSearch" method="get" autocomplete="off">
<input type="search" name="s" placeholder="Search" />
</form>
Javascript
$(document).off().on("input", "#mainSearch", function(e) {
e.stopImmediatePropagation();
e.stopPropagation();
e.preventDefault();
var ser = $(this).serialize();
setTimeout(function(){
Turbolinks.visit(
homeurl+"/?"+ser,
{
change: ['content']
}
);
},110);
return false;
});
它工作正常,但按住一个键时事件会触发多个请求。
我该如何采取预防措施使其保持按下状态? .on("input"
您是否忘记取消之前的计时器?
var timer = null;
$(document).off().on("input", "#mainSearch", function(e) {
e.stopImmediatePropagation();
e.stopPropagation();
e.preventDefault();
var ser= $(this).serialize();
clearInterval(timer);
timer = setTimeout(function(){
Turbolinks.visit(
homeurl+"/?"+ser,
{
change: ['content']
}
);
},110);
return false;
});
编辑:与其重新发明轮子,使用现有解决方案始终是一个不错的选择,$.debounce()
这正是您正在寻找的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句