我发现当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;
});
在这里你可以看到demo:http://jsfiddle.net/yqMGG/91/
答案 0 :(得分:3)
您需要比较数值,而不是字符串值。 .val()
函数的输出是根据DOM Level 2的DOMString值,其中包含:
interface HTMLInputElement : HTMLElement { ... attribute DOMString value; ... }
所以你的(5> 100)测试真的是"5" > "100"
这是真的,因为字符串按字典顺序进行比较。
解决方案是改变
if( a > b){
到
if(+a > +b){
+
前缀运算符将其参数强制转换为数字。
答案 1 :(得分:0)
使用parseFloat()
,否则将值视为字符串。
$('#target').submit( function() {
var a = parseFloat($("#number").val());
var b = parseFloat($("#max").val());
if( a > b){
alert("exceed limit");
}
return false;
});
参见 Demo
答案 2 :(得分:0)
您可以将其乘以1以将其从字符串转换为数字,或使用parseInt
var a = $("#number").val() * 1;
OR
var a = parseInt($("#number").val(), 10);
parseInt函数的第二个参数是基数。