类型为“number”的<input />标记的值的类型是什么?

时间:2014-01-09 13:44:05

标签: javascript html

假设我有一个输入标签,其type属性设置为“number”:

<input type="number" id="num-of-units"></input>

我想获取当前数值并将其与其他一些数值进行比较:

if (document.getElementById("num-of-units").value > 0) ...

我可以安全地假设'value'是数字类型而不是字符串类型,还是我必须转换它?

P.S。:我意识到我可以在Firefox或其它东西上测试它,但我想确定标准是什么。

由于

5 个答案:

答案 0 :(得分:5)

任何.value字段的

<input>都是字符串。 type属性可帮助浏览器控制放入输入字段的内容或用于访问输入元素的输入助手的类型(例如,数字的微调控件),但不会更改{.value的类型1}}。

演示测试:http://jsfiddle.net/jfriend00/2k66J/

如果您想亲眼看看,请在Firefox,IE,Chrome等中运行该演示......他们都说这是string类型。如果你想要数值,你只需将它自己转换为数字。

答案 1 :(得分:2)

没有。输入元素type =“number”的value属性将在javascript中作为字符串类型值检索。您必须将其转换为数字数据类型(int,float)才能将其用作此类。

答案 2 :(得分:1)

您的问题分为两部分:

第1部分

  

我可以安全地假设'value'是数字类型而不是a   字符串类型,还是我必须转换它?

答案:不,是的。

不,你无法安全地承担。因为它实际上是一个字符串。 input s上的值是字符串。

此外,因为它将忽略非数字值并返回一个空字符串。因此,如果存在非数字条目,您还必须检查空字符串。

是的,你必须转换它。

检查这个小提琴: http://jsfiddle.net/abhitalks/2k66J/10/

第2部分

  

P.S。:我意识到我可以在Firefox或其他东西上测试它,但是我   想要确定标准是什么

@dystroy在评论中提到了该标准。无论如何,这是标准所说的:

http://www.w3.org/wiki/HTML/Elements/input/number

向下滚动到值所示的值:

  

value = string

另一个来源参考:http://dev.w3.org/html5/markup/input.number.html

答案 3 :(得分:-2)

标准对此一无所知。看看Ecma-262 revision 5

简短的回答是你无法确定。

答案 4 :(得分:-2)

仔细检查你的价值总是更安全;

1)检查值是否为“”或null;

2)如果您正在使用服务器,即使在验证了您的值后,请在后端仔细检查它,特别是如果该值将被插入您的数据库。

从技术上讲,你很高兴,它会被html5验证为数字。

希望这有帮助!

编辑:不要忘记您的Var是Javascript。