使用 <input type=number>
会导致在事件侦听器中,如果输入不是有效数字,则 this.value
返回空字符串。您可以在 http://jsfiddle.net/fSy53/ 查看示例。
但是,无效的字符仍然显示在输入框中。
有没有办法从事件侦听器内获取实际显示的值,包括无效字符?
我的最终目标是防止用户在字段中键入任何非数字字符。我需要使用 type=number
,以便移动设备使用数字虚拟键盘。我的目标是在keyup keypress
上执行像 this.value = this.value.replace(/[^0-9.]/g, "")
这样的操作,但是这不起作用,因为如果键入无效字符,则从 this.value
读取将返回 ""
。
inputmode
,可以设置为numeric
以显示数字键盘。不幸的是,根据mozilla,目前没有浏览器支持它。 - sometype='number'
,Chrome将防止非数字字符出现在输入框中。 - Sean the Beaninputmode
属性的更新:目前默认情况下没有任何浏览器支持它(请参见 http://caniuse.com/#search=inputmode),但可以通过设置 Firefox 的dom.forms.inputmode
标志来启用它。 - Sean the Bean