jquery事件无法正常工作

时间:2012-11-26 15:47:06

标签: javascript jquery

我有一个Invoice表单和一个jquery函数。 在发票中,如果我输入的数量大于可用数量,那么我必须提醒用户。

我的问题是:让最大数量为5,如果我输入数据为7(单个数字>最大可用数量),那么我的代码工作正常。但是,如果我输入两个数字,例如。 17(两个挖掘者>最大可用数量)然后我的警报框没有到来。             我的意思是onkeyup我的功能只能用一位数。

我怎样才能让它发生?请帮忙。

      $('input[name="quantity"]').keyup(function() 
       {  
    //problem is here
        var $tr = $(this).closest("tr");
        var unitprice = $tr.find('input[name^="unitprice"]').val();

        var q = $tr.find('input[name^="quantity"]').val();
        var cq = $tr.find('input[name^="checkquantity"]').val();

        if(q>cq)
      {
      alert("Error: Quantity value exceeds then available quantity..Max Quantity is "+cq);
          //this works fine only if single digit is entered in textbox quantity
       }

         //----below are some other stuffs -these are working fine
        $tr.find('input[name^="sprice"]').val($(this).val() * unitprice); 
        var totalPrice = 0;
        $('input[name="sprice"]').each(function()
        {
            totalPrice += parseFloat(this.value);
            $('[name=subtotal]').val(totalPrice);
        });  
    });  
    --------------
    ------------
   // Form containing the above textboxes
        <input type="submit" id="submitbtnId" value="Save"/>`

3 个答案:

答案 0 :(得分:1)

q > cq正在比较2个字符串,这不是您想要的。您正在尝试比较这些字符串的数值。

请改用:

if ( +q > +cq)
{
    // alert your error
}

请注意,通过在变量前添加+符号前缀,您可以将它们转换为数字。


更好的是,一旦获得值,就将它们转换为数字:

var $tr = $(this).closest("tr");
var unitprice = +$tr.find('input[name^="unitprice"]').val();

var q = +$tr.find('input[name^="quantity"]').val();
var cq = +$tr.find('input[name^="checkquantity"]').val();

if ( q > cq )
{
    alert("Error: Quantity value exceeds then available quantity..Max Quantity is " + cq);
}

答案 1 :(得分:0)

您需要使用parseInt()来确保比较整数,而不是字符串:

if (parseInt(q, 10) > parseInt(cq, 10)) {
    /* Rest of your code */
}

答案 2 :(得分:0)

您的值将被比较为 string 。如果要比较数字,请使用:

parseInt()parseFloat()

[..].val() * 1,但是如果没有数字,这将返回'NaN',而parseInt()和parseFloat()将返回0