在尝试确定一个值是否大于另一个值时,我遇到了一个奇怪的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
字段开始关注时,如果它的值为1
或2
,则效果正常。如果我的值为3, 4, 5, 6, 7, 8, 9
,它甚至可以工作。
但问题是当我使用10-19
或100-199
或1000-1999
等的值时。它说它有足够的库存而不应该。
答案 0 :(得分: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 );
答案 1 :(得分:0)
您正在处理字符串比较而不是数字。在值周围放置一个parseInt,您将得到预期的结果。