如果输入不是有效数字,则使用<inputtype=number>将导致this.value事件侦听器内部返回空字符串。
<inputtype=number>
this.value
但是,无效字符仍显示在输入中。
有什么方法可以从事件侦听器中获取实际 显示 的值,包括无效字符?
我的最终目标是防止用户在字段中实际键入任何非数字字符。我需要使用type=number以便移动设备使用数字虚拟键盘。我的目标是做这样的事情this.value= this.value.replace(/[^0-9.]/g,"")上keyupkeypress,但这并不因为如果无效字符键入工作,从阅读this.value的回报""。
type=number
this.value= this.value.replace(/[^0-9.]/g,"")
keyupkeypress
""
如果您不喜欢传入键值,请尝试阻止默认行为:
document.querySelector("input").addEventListener("keypress", function (evt) { if (evt.which < 48 || evt.which > 57) { evt.preventDefault(); } });