繁体   English   中英

Javascript:如何更新我的事件监听器,仅在用户STOPS键入时进行更改?

[英]Javascript: How do I update my Event Listener to only make a change when the user STOPS typing?

我有这个事件监听器:

input_1.addEventListener('input',function(){
    updateFromInput(1);
},false);

它控制滑块的位置。
现在,如果我想在输入中键入“100”,滑块将从跳转到“1”位置开始,然后跳到“10”,最后跳到“100”位置。
它非常笨重,我想给它一个更自然的感觉。

虽然我现在读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
}

这将使更新延迟50ms( setTimeout调用的值)。 如果输入超过50毫秒,则会更新。

我认为处理这个问题的更好方法是关键时刻和关键时刻。 这样,如果用户按下并按住键,则不会被误解。 看看这个jsFiddle:

http://jsfiddle.net/9c46B/3/

显然,您必须将其更改为添加事件侦听器(而不是HTML中的内联处理程序)。 很明显,你会将警报改为你想要的任何东西。 但希望这有助于您正在寻找的东西!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM