【发布时间】:2013-03-15 16:10:47
【问题描述】:
This jsfiddle demonstrates the following issue.
最简单的例子是:
<input id="number" type="number" value="1">
console.log(document.getElementById('number').value);
这会按预期记录 1。但是:
<input id="number" type="number" value="1A">
console.log(document.getElementById('number').value);
只记录一个空字符串'',因为值中的非数字字符。某些设备+浏览器(例如 Chrome)允许您在这些输入中输入非数字字符。
这很烦人,因为我想要支持它的设备(例如 iPhone、iPad 数字键盘)的 type="number" 输入。但是我想使用 javascript 来阻止输入脏输入 - 这需要获取 keyup 上的值 - 然后正则表达式替换非数字字符。
看起来 jQuery 的 .val() 方法给出了相同的结果。
【问题讨论】:
-
不要阻止用户输入,这很烦人。检查 keyup 上的值,如果该值无效,则显示一条不显眼的消息,让用户知道该值无效并让他们自己修复。您只关心发送到服务器时它是一个有效值,同时该值可以是任何值。哦,Firefox 会显示输入的值。
-
如果你想要那个输入方法,让输入字段在 iOS 设备上只有
type=number -
为什么需要这个值?您可以从键盘事件中知道将插入什么。
-
@int32_t - 谢谢,我不敢相信我没想到!
标签: javascript html textinput