如何获得 <input type="number">
字段的"real"值?
我有一个 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的输入框的其他属性列表:
我没有看到任何类似于实际输入的东西 .
我也找不到方法来判断是否是"is empty"框 . 也许我可以推断:
value isEmpty Conclusion
============= ============= ================
"4" false valid number
"" true empty box; not a problem
"" false invalid text; color it red
Note :您可以忽略水平规则后的所有内容;它让例子与问题混淆了 . 人们可能希望得到这个问题的答案,除了将红色框着色之外的原因(一个例子:在onBlur事件期间将文本 "four"
转换为拉丁文 "4"
符号)
如何获得 <input type="number">
控件的"raw"值?
4 回答
根据WHATWG,你不应该't be able to get the value unless it'有效的数字输入 . 输入数字字段's sanitization algorithm says the browser is supposed to set the value to an empty string if the input isn' t是有效的浮点数 .
通过指定类型(
<input type="number">
),您希望能够捕获非数字输入并对其执行某些操作,您必须依赖旧的经过验证的文本输入字段并自行解析内容 .W3也有相同的规格并添加:
它没有回答这个问题,但有用的解决方法是检查
对象的ValidityState提供了有关用户输入内容的线索 . 考虑具有
min
和max
集的type="number"
输入我们总是想使用
.validity.valid
.其他酒店仅提供奖励信息:
在使用浏览器之前,您必须确保浏览器支持HTML5验证:
奖金
Spudly有一个他删除的有用答案:
Track all pressed keys based on their key codes
我想人们可以听取键盘事件并根据键码保留所有输入字符的数组 . 但这是一项相当繁琐的任务,可能容易出错 .
http://unixpapa.com/js/key.html
Select the input and get the selection as a string
全部归功于: int32_t