val()如何返回Number?

时间:2012-02-10 11:45:04

标签: javascript jquery string numbers

val docs中写下此说明:

  

.val()返回:String,Number,Array

我试图获得一个Number,但它似乎只返回string,是否有一些我做错了?

$('#gdoron').val('1');

alert($('#gdoron').val() === '1'); // true 
alert(typeof $('#gdoron').val());  // string.

$('#gdoron').val(1);

alert($('#gdoron').val() === 1);  // false
alert(typeof $('#gdoron').val()); // string (not "number"!)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="gdoron" />

我的问题是: val()如何按文档说明返回数字?问题不在于如何解析字符串。

6 个答案:

答案 0 :(得分:64)

文本输入的value属性将始终返回一个字符串。您需要parseInt该值才能获得整数:

parseInt($('#myInput').val(), 10);

答案 1 :(得分:25)

一些HTML5元素,例如进展;

alert(typeof $("#prog").val()); // number 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<progress value="50" max="100" id="prog"></progress>

答案 2 :(得分:15)

我已经做了一些快速的偷看,我想我有一个答案。如果你看一下val function的实现,你可以看到如果有一个所谓的val-hook,如果val-hook返回一个数字,那么这个数字将从val函数原样返回。我发现this discussion表明插件主要使用val-hook来创建自定义控件,例如滑块等,其中val的“自然”返回值可以是整数。希望这能为你提出一些问题。

答案 3 :(得分:1)

您可以简单地创建一个jquery插件来代替val()来执行此操作。这里我创建函数nval()来获取元素值时使用而不是val()。

$.fn.nval = function() {
   return Number(this.val())
};

然后在您的代码中使用以下内容将值作为数字

$('#elementID').nval()

答案 4 :(得分:0)

嗯。对于控制台中的所有这些,jQuery $($0).val()和Javascript $0.value返回字符串“ 3”:

<input type='number' value='3'/>
<input type='text' value='3'/>
<input type='radio' value='3'/>
<input type='checkbox' value='3'/>

所以我认为the jQuery val() documentation可能更清楚。我看不到它将如何返回数字值,所以我建议使用parseInt($($0).val())parseFloat($($0).val())

答案 5 :(得分:-2)

-之前使用一元运算符+~$将返回一个 number 这种情况。

alert(typeof +$('#gdoron').val()); // number

更多详细信息in this answer