2

我有一个input type="number"并且正在使用字段中的向上/向下箭头来更改输入的值。我想在最终单击/更改输入后触发一个功能。

最终我的意思是在输入没有改变 1000 毫秒之后(我假设用户现在已经停止点击)。

我已经设置了一个setTimeout()运行函数的 1000 毫秒,但即使我正在调用clearTimeout() .on('change')输入,函数在第一次更改后运行 1000 毫秒,而不是最后一次。

我设置了一个简单的JSFiddle来说明我的意思。与div“你好世界!” 在它不应该出现,直到最后一次点击之后。

如果您快速单击输入上的向上箭头(至少每 999 毫秒一次),则div不应出现。

我在这里查看了很多其他类似的问题,但它们几乎都与计时器变量的范围有关,我认为这不适用于这里。

我究竟做错了什么?

4

1 回答 1

3

onchange,当输入失去焦点时触发,尝试输入..顺便说一句。这里不需要 jquery。

var timeOut;
document.getElementById("foo").addEventListener("input", function() {
  clearTimeout(timeOut);
  timeOut = setTimeout(function() {
    document.getElementById("bar").style.display = "block";
  }, 1000);
});
于 2017-06-23T19:25:14.843 回答