如何禁用javascript搜索自动完成的多个请求?

用户9631725

我正在使用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章