来自文本输入的值的“大于”比较的意外结果

时间:2011-12-12 14:29:35

标签: javascript jquery

在尝试确定一个值是否大于另一个值时,我遇到了一个奇怪的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等的值时。它说它有足够的库存而不应该。

2 个答案:

答案 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,您将得到预期的结果。