2011-12-12 21 views
1

当试图确定一个值是否大于另一个值时,我遇到了奇怪的JavaScript/jQuery数学错误。“大于”比较文本输入值的意外结果

这里是一个链接,使用的jsfiddle,我的代码:http://jsfiddle.net/qxeTj/

$("#Quantity").live("focusout", function() { 
    var qty = +$(this).val(); 
    var stock = +$('#StockLvl').val(); 
    if (qty > stock) { 
     $('#Result').html("<p>Quantity: " + qty + "</p><p>Stock: " + stock + "</p>" + "<p>Not Enough Stock.</p>"); 
    } 
    else if (stock > qty || stock == qty) { 
     $('#Result').html("<p>Quantity: " + qty + "</p><p>Stock: " + stock + "</p>" + "<p>Enough Stock.</p>"); 
    } 
}); 

的问题实施例:

当我集中出input字段的,如果它具有的12的值,它工作正常。它甚至可以工作,如果我的值为3, 4, 5, 6, 7, 8, 9

但问题是当我使用10-19100-1991000-1999等等的值。它说它有足够的股票,当它不应该。

+0

仅供参考,而非stock> qty ||股票== qty',只是'stock> = qty'。 – RightSaidFred

+0

http://jsfiddle.net/bondythegreat/E4PaD/ – bondythegreat

回答

6

您正在比较字符串。先将它们转换为数字。

var qty = Number($(this).val()); 
var stock = Number($('#StockLvl').val()); 

var qty = +$(this).val(); 
var stock = +$('#StockLvl').val(); 

这样会在你的情况下最安全的。

var qty = parseInt($(this).val(), 10); 
var stock = parseInt($('#StockLvl').val(), 10); 
+0

Ahh ofcourse! parseInt函数();.我有时候很愚蠢。谢谢。 – CallumVass

+0

不客气。 – RightSaidFred

0

你正在处理字符串比较不是数量。把一个parseInt放在值的周围,你会得到预期的结果。