一尘不染

防止在输入类型编号中键入非数字

javascript

如果输入不是有效数字,则使用<inputtype=number>将导致this.value事件侦听器内部返回空字符串。

但是,无效字符仍显示在输入中。

有什么方法可以从事件侦听器中获取实际 显示 的值,包括无效字符?

我的最终目标是防止用户在字段中实际键入任何非数字字符。我需要使用type=number以便移动设备使用数字虚拟键盘。我的目标是做这样的事情this.value= this.value.replace(/[^0-9.]/g,"")keyupkeypress,但这并不因为如果无效字符键入工作,从阅读this.value的回报""


阅读 285

收藏
2020-05-01

共1个答案

一尘不染

如果您不喜欢传入键值,请尝试阻止默认行为:

document.querySelector("input").addEventListener("keypress", function (evt) {
    if (evt.which < 48 || evt.which > 57)
    {
        evt.preventDefault();
    }
});
2020-05-01