Javascript Jquery为许多事件消除相同范围的影响

Javascript Jquery为许多事件消除相同范围的影响,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,我正在使用Ben Alman的插件来消除一些输入事件的影响。 我想为不同的事件指定不同的去盎司时间,例如,键入事件可以比更改事件等待更长的时间 考虑以下代码: $(function(){ var changeInput=function(){ console.log("change input call"); }; $("#test") .on("keyup",$.debounce(100

我正在使用Ben Alman的插件来消除一些输入事件的影响。 我想为不同的事件指定不同的去盎司时间,例如,键入事件可以比更改事件等待更长的时间

考虑以下代码:

    $(function(){

        var changeInput=function(){
            console.log("change input call");
        };

        $("#test")
            .on("keyup",$.debounce(1000,changeInput))
            .on("blur",$.debounce(150,changeInput));

    })
这是小提琴:

有了这段代码,我想在键入时等待1000毫秒,在模糊时仅等待150毫秒(如果用户退出输入字段,我可以加速去盎司调用),如果您尝试在文本字段中键入内容并快速退出输入字段,您将得到两个changeInput method调用,而不仅仅是一个


有没有办法为debounce定义一个“范围”呢?

你真的不需要任何插件,只需使用一个超时,例如以下逻辑(即使我也会使用onchange事件而不是onblur,但是…):


我知道,但我认为插件非常有用,不需要复制和粘贴许多代码块。。。我的申请表中可能还需要一些其他的细节。如果没有其他的方法,我会考虑你的解决方案。非常感谢。
var i = 0; // just for DEMO purpose
$(function () {
    var changeInput = function (e) {
        clearTimeout(this.timeout);
        this.timeout = setTimeout(function () {
            $("p").html(++i);
        }, e.type === "keyup" ? 1000 : 150);
    };

    $("#test").on("keyup blur", changeInput);
});