【发布时间】:2021-07-15 13:11:08
【问题描述】:
我想创建一个只能写入自然数的输入字段。 (是的,我知道这可能是一种不好的做法,因为用户没有得到任何反馈)。 如果您键入的不是数字,它不应该出现在输入中。 我想使用纯 JavaScript(没有 JQuery)。
这就是我通常的做法:
<input oninput="this.value = this.value.replace(/\D+/g, '')">
但我发现,<input type="number"> 更适合移动设备,因为它不显示整个键盘,而只显示数字。
所以我的问题是,我如何将type="number" 与过滤相结合(并使其与剪切/复制/粘贴兼容)?
如果输入任何非数字字符,<input type="number">-元素的值始终为空字符串。所以我上面的过滤方法不起作用。有什么解决办法吗?
如果没有,我将不得不监听 keydown、paste、cut 以及可能更多的事件。我必须考虑哪些事件,我将如何实现它,还有没有我忽略的更简单的方法?
【问题讨论】:
-
<input type="number" />缺少什么?不清楚你不能用 type="number" 做什么 - 用户不能在其中输入除数字以外的任何内容 -
@mplungjan 我想它对用户的影响还不够。
-
@mplungjan 您可以在 type="number" 的输入中键入任何字符。这只是无效的。但我想完全阻止用户在输入框中输入其他字符。
-
@FireFuro99 stackoverflow.com/a/68394595/295783
-
你用的是什么浏览器,输入类型号不允许我输入任何我想要的东西。
标签: javascript html validation input