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

Cal*_*ass 1 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>");
    }
});
Run Code Online (Sandbox Code Playgroud)

问题示例:

当我将焦点移出该input字段时,如果它具有1或的值2,则它可以正常工作.如果我有一个值,它甚至可以工作3, 4, 5, 6, 7, 8, 9.

但问题是,然后当我用值从10-19100-1991000-1999等等.它说它有足够的库存,而不应该.

Rig*_*red 6

你在比较字符串.首先将它们转换为数字.

var qty = Number( $(this).val() );
var stock = Number( $('#StockLvl').val() );
Run Code Online (Sandbox Code Playgroud)

要么

var qty = +$(this).val();
var stock = +$('#StockLvl').val();
Run Code Online (Sandbox Code Playgroud)

要么

在您的情况下,这种方式最安全.

var qty = parseInt( $(this).val(), 10 );
var stock = parseInt( $('#StockLvl').val(), 10 );
Run Code Online (Sandbox Code Playgroud)