我发现当jQuery得到一个尾数为0(例如100)的值时,它会忽略它。因此,如果我比较5>100,结果是真的。那么我该如何解决这个问题呢?下面是HTML代码:
<form id="target">
<input type="text" id="max" value="100"/>
<input type="text" id="number" />
<input id="submit" type="submit" value="submit" />
</form>下面是jquery:
$('#target').submit( function() {
var a = $("#number").val();
var b = $("#max").val();
if( a > b){
alert("exceed limit");
}
return false;
});在这里你可以看到演示:http://jsfiddle.net/yqMGG/91/
发布于 2013-01-08 15:32:00
您需要比较数值,而不是字符串值。根据DOM Level 2,.val()函数的输出是一个DOMString值,它表示:
接口HTMLInputElement : HTMLElement { ...attribute DOMString value;... }
所以你的(5 > 100)测试实际上是"5" > "100",这是真的,因为字符串是按字典顺序比较的。
解决之道就是改变
if( a > b){至
if(+a > +b){+前缀运算符将其参数强制转换为一个数字。
发布于 2013-01-08 15:31:30
使用parseFloat(),否则这些值将被视为字符串。
$('#target').submit( function() {
var a = parseFloat($("#number").val());
var b = parseFloat($("#max").val());
if( a > b){
alert("exceed limit");
}
return false;
});请参阅
发布于 2013-01-08 15:50:31
可以将其乘以1以将其从字符串转换为数字,或者使用parseInt
var a = $("#number").val() * 1;或
var a = parseInt($("#number").val(), 10);parseInt函数的第二个参数是基数。
https://stackoverflow.com/questions/14210142
复制相似问题