在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()
如何按文档说明返回数字?问题不在于如何解析字符串。
答案 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。