【问题标题】:How can I trigger a function while number is changing in an input of type number?如何在数字类型的输入中更改数字时触发函数?
【发布时间】:2018-05-06 21:58:40
【问题描述】:

假设我有一个number 类型的input,如下所示:

<input type="number" step="0.05">

我想在每次数字递增或递减时触发canvas 渲染函数,例如renderCanvas()

这个解决方案:

<input type="number" step="0.05" onchange="renderCanvas()">

当我使用键盘来减少/增加我的值时有效,但是当我使用箭头和鼠标时,该功能仅在鼠标向上时触发。

function renderCanvas()
{
  console.log("the value is " + document.getElementsByTagName("input")[0].value)
}
&lt;input type="number" step="0.05" onchange="renderCanvas()"&gt;

如何才能达到与使用键盘和鼠标一样的效果?

ps:问题与post 不同,因为该功能仅在键/鼠标启动时触发。我想要的是每次屏幕上的值发生变化时触发我的函数。

【问题讨论】:

标签: jquery html events input


【解决方案1】:

您应该使用 keyupmouseup 事件,因为如果我理解正确,您已经添加了 jquery 的标签,您希望在使用鼠标或键盘,如果正确,这里是演示,您可以看到控制台在每次使用鼠标、键盘、数字键或箭头键时打印值。希望对你有帮助

var here = 0;
$("#my-input").on('keyup mouseup change', function() {
  if ($(this).val() !== '') {
    console.log(here++);
    console.log("the value is " + $(this).val());
  }
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="my-input" type="number" step="1">

EDIT

或者,如果您希望检测数字变化,如果您将键按住在我们将鼠标悬停在它上面时出现的数字输入的箭头上,那么我认为这不是一件容易的事,在这种情况下您应该使用自定义滑块并将滑块绑定到隐藏输入以不断更新值并将onchange 绑定到不断更新cavas的隐藏输入

【讨论】:

  • 我一定把我的问题解释得很糟糕。您的解决方案不会冒犯您,但这是一个事实(至少在我的计算机上)比以前更糟糕。解决方案中的 console.log 仅在密钥启动时触发。我想要的是保持键盘的 onchange 行为,并在我用鼠标递增/递减时保持不变。每次屏幕上的数字发生变化时,函数都应该触发。你对我的问题有更好的理解吗?提前致谢
  • 不,你解释得很清楚,我理解的和你现在说的一样,奇怪的是对我来说它适用于所有场景,你使用什么浏览器@JSmith
  • Firefox Quantum 59.0.2(64 位)
  • 我在chrome Version 66.0.3359.139 (Official Build) (64-bit)FF Quantum 59.0.3 (64-bit) 上对其进行了测试,它在那里运行良好,您可以更新到最新版本并重新检查,或者在chrome 中测试它。 @JSmith
  • 我刚刚在 chrome 和 chrome canary 上尝试过,我得到了同样的结果。控制台日志仅在鼠标启动或按键启动时显示。即使我更新也不会改变它不适用于旧版本。
【解决方案2】:

答案是使用oninput 事件。

【讨论】:

  • 这个比较简洁。您的贡献将从一些解释和/或代码示例中受益。
猜你喜欢
  • 1970-01-01
  • 2018-09-08
  • 1970-01-01
  • 2019-02-07
  • 2013-04-24
  • 1970-01-01
  • 2019-03-20
  • 1970-01-01
  • 2012-07-29
相关资源
最近更新 更多