【发布时间】:2013-11-26 19:12:15
【问题描述】:
如果输入不是有效数字,使用<input type=number> 将导致事件侦听器内部的this.value 返回一个空字符串。你可以在http://jsfiddle.net/fSy53/看到一个例子
但是,无效字符仍然显示在输入中。
有没有办法从事件监听器中获取实际显示的值,包括无效字符?
我的最终目标是防止用户在字段中实际输入任何非数字字符。我需要使用type=number,以便移动设备使用数字虚拟键盘。我的目标是在keyup keypress 上执行类似this.value = this.value.replace(/[^0-9.]/g, "") 的操作,但这不起作用,因为如果输入了无效字符,从this.value 读取会返回""。
【问题讨论】:
-
我想之前有人问过这个问题,答案是否定的,让我挖掘一下。 编辑:这里是:stackoverflow.com/questions/3090810/…
-
关于数字键盘:有一个新的 HTML5 属性
inputmode可以设置为numeric以显示数字键盘。不幸的是,根据mozilla,目前还没有浏览器支持它 -
请注意,所描述的问题发生在 Firefox 中,但不在 Chrome 中。如果设置了
type='number',Chrome 将阻止非数字字符出现在输入中。 -
关于
inputmode属性的更新:默认情况下任何浏览器仍然不支持它(参见caniuse.com/#search=inputmode),但可以通过设置dom.forms.inputmode标志在Firefox中选择启用。跨度> -
hmmm...“e”不是
type=number中显示的唯一“无效”字符吗??
标签: javascript html