javascript – 如何获取原始值一个字段?

如何获得一个< input type =“number”>的“真实”值。领域?

我有一个输入框,我使用较新的HTML5输入类型编号:

<input id="edQuantity" type="number">

这在Chrome 29中大多支持:

我现在需要的是能够读取用户在输入框中输入的“原始”值。如果用户输入了一个数字:

那么edQuantity.value = 4,一切都很好。

但是如果用户输入无效的文本,我想把输入框的颜色红色:

不幸的是,对于type =“number”输入框,如果文本框中的值不是数字,那么值将返回一个空字符串:

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事件期间将文本“四”转换为拉丁“4”符号)

如何获得一个< input type =“number”>的“原始”值。控制?

奖金阅读

> jsFiddle of all of the above(更新)
> Quirkmode.org entry for the new input types

根据WHATWG,你不应该能够获得值,除非它是有效的数字输入。输入数字段的清理算法说,如果输入不是有效的浮点数,浏览器应该将值设置为空字符串。

The 07001 is as follows: If the 07002 of the
element is not a 07003, then set it to the empty
string instead.

通过指定类型(< input type =“number”>),您要求浏览器为您做一些工作。如果,另一方面,你想要能够捕获非数字输入并做一些事情,你必须依靠旧的试验和真正的文本输入字段,并自己解析内容。

W3也有相同的规格,并补充说:

User agents must not allow the user to set the value to a non-empty
string that is not a valid floating-point number.

http://stackoverflow.com/questions/18852244/how-to-get-the-raw-value-an-input-type-number-field

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:javascript – 如何获取原始值一个字段?