我有一个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"/>`
答案 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