【发布时间】:2013-09-22 00:47:32
【问题描述】:
如何获得<input type="number"> 字段的“真实” 值?
我有一个input 框,我正在使用更新的 HTML5 输入类型number:
<input id="edQuantity" type="number">
Chrome 29 主要支持此功能:
我现在需要的是能够读取用户在输入框中输入的 "raw" 值。如果用户输入了一个数字:
然后edQuantity.value = 4,一切都很好。
但如果用户输入无效文本,我想将输入框涂成红色:
很遗憾,对于type="number" 输入框,如果文本框中的值不是数字,那么value 返回一个空字符串:
edQuantity.value = "" (String);
(至少在 Chrome 29 中)
如何获取<input type="number"> 控件的"raw" 值?
我尝试浏览 Chrome 的输入框的其他属性列表:
我没有看到任何类似于实际输入的内容。
我也找不到方法来判断盒子是否“是空的”。也许我可以推断:
value isEmpty Conclusion
============= ============= ================
"4" false valid number
"" true empty box; not a problem
"" false invalid text; color it red
注意:可以忽略横线后的所有内容;这只是证明这个问题的填充物。另外:不要将示例与问题混淆。人们可能希望得到这个问题的答案其他,而不是把方框涂成红色(一个例子:在 onBlur 事件期间将文本 "four" 转换为拉丁文 "4" 符号)
如何获得<input type="number"> 控件的"raw" 值?
阅读奖励
【问题讨论】:
-
数字输入字段的“真实”值必须是数字。如果您想允许输入数值以外的值,那么
number不是您要查找的输入类型;使用普通的text输入。 -
@robertc Chrome 是允许输入非数字的代理;我只需要知道他们输入了数字以外的东西。
-
检查该字段的
validitystate - 我希望typeMismatch但我还没有检查自己。 -
@int32_t 向下阅读第六行(即“但如果用户输入...”)
-
我的用例...我有两个数字字段:纬度和经度。我想检测是否有人粘贴“纬度,经度”并适当处理。目前,使用 type="number" 是不可能的。因为“lat, lon”是无效的.. 没有办法获得“原始”值来执行正则表达式。另一个用例:显示客户错误:“
blahis an invalid number”。
标签: javascript html validation input