输入 type="number" 只允许输入数字

Fir*_*o99 7 html javascript validation input

我想创建一个只能在其中写入自然数的输入字段。(是的,我知道这可能是一个不好的做法,因为用户没有得到任何反馈)。如果您键入数字以外的任何内容,它不应出现在输入中。我想使用纯 JavaScript(没有 JQuery)。

我通常会这样做:

<input oninput="this.value = this.value.replace(/\D+/g, '')">
Run Code Online (Sandbox Code Playgroud)

但我发现,这<input type="number">对于移动设备来说是更受欢迎的,因为它不显示整个键盘,而只显示数字。

所以我的问题是,如何type="number"与过滤结合(并使其与剪切/复制/粘贴兼容)?

<input type="number">如果输入任何非数字字符,则 - 元素的值始终为空字符串。所以我上面的过滤方法不起作用。有什么解决方法吗?

如果没有,我就必须监听按键、粘贴、剪切以及可能的更多事件。我必须考虑哪些事件,我将如何实施它,以及是否有我忽略的更简单的方法?