Javascript:如何更新我的事件侦听器,使其仅在用户停止键入时进行更改?

Javascript:如何更新我的事件侦听器,使其仅在用户停止键入时进行更改?,javascript,timer,addeventlistener,Javascript,Timer,Addeventlistener,我有一个事件侦听器: input_1.addEventListener('input',function(){ updateFromInput(1); },false); 它控制滑块的位置。 现在,如果我想在输入中输入“100”,滑块将首先跳到“1”位置,然后跳到“10”,最后跳到“100”位置。 它很笨重,我想给它一种更自然的感觉 虽然我现在读JS已经很舒服了,但我仍然是写JS的新手 我理解这类计时器所需的逻辑(如果计时器大于750ms updateFromInput),我只是有点不

我有一个事件侦听器:

input_1.addEventListener('input',function(){
    updateFromInput(1);
},false);
它控制滑块的位置。
现在,如果我想在输入中输入“100”,滑块将首先跳到“1”位置,然后跳到“10”,最后跳到“100”位置。
它很笨重,我想给它一种更自然的感觉

虽然我现在读JS已经很舒服了,但我仍然是写JS的新手

我理解这类计时器所需的逻辑(如果计时器大于750ms updateFromInput),我只是有点不清楚如何开始用javascript编写它。
当然,这种类型的计时器功能已经被很多开发人员使用过无数次了。。。只是在努力寻找一两个例子:)


任何代码、链接或示例都将不胜感激。

通常的方法是设置一个计时器,如果您看到另一个按键,请取消上一个计时器并设置一个新的计时器,例如:

var timer = 0;
input_1.addEventListener('input',function(){
    maybeUpdateFromInput(1);
},false);

function maybeUpdateFromInput(val) {
    if (timer) {
        clearTimeout(timer);
    }
    timer = setTimeout(function() {
        updateFromInput(val);
        timer = 0;
    }, 50); // 50 = 50ms, you may want 75, 100, even 125
}

这将使更新延迟50毫秒(调用
setTimeout
时的值)。如果超过50毫秒没有看到输入,它就会更新。

我认为更好的处理方法是按下键和向上键。这样,如果用户按住键,就不会被误解。看看这个JSFIDLE:


显然,您必须将其更改为添加事件侦听器(而不是HTML中的内联处理程序)。很明显,你会把警报改成你想要的。但希望这能帮上忙,这就是你想要的

@JeromeC.:哈哈,几秒钟前。只有这一点。@zzbov:“去Bouncing”对我来说是个新名词。。谷歌提供了一些有价值的阅读材料。谢谢我喜欢你在这里的想法。我要玩一会儿。非常感谢!