jquery if else比较查询问题

时间:2015-10-04 07:35:32

标签: javascript jquery

我有以下jquery if \ else比较,根据结果评估部分代码,

if($('#order_quantity').val() < $('#available_quantity').val()) {
   // ---code to run----
} else {
   // --- code to show error---
}

此代码对输入正确工作3-4次,之后工作错误,

$('#order_quantity').val() = 5$('#available_quantity').val() = 46时,理想情况下 - 要运行的代码 - 应该执行但是它正在运行 - 代码显示错误 - < / strong> of else statement。

有时候它是正确的,有时却没有,我为上面的输入值创建了console.log,输入是正确的,但仍然比较结果会产生错误的结果

这种比较可能有什么问题?

5 个答案:

答案 0 :(得分:6)

DOM 读取的值为字符串。您需要将其转换为数字才能在算术运算中使用它,除非运算符强制操作数为数字。

if(+$('#order_quantity').val() < +$('#available_quantity').val())

您可以使用

将字符串转换为数字
  1. 通过在字符串前加上一元+运算符,这会将字符串强制转换为数字。
  2. 使用Number功能
  3. 使用parseFloat
  4. 使用parseInt,但这会将浮点值转换为整数。
  5.   

    此代码正确地为输入工作3-4次,之后它工作错误

    代码适用于某些值,因为字符串的比较方式。

    > "5" < "46" // false
    

    字符串逐字符进行比较,就像排序工作一样。在此代码中,比较以'5' < '4'完成,比较字符串时,将其ASCII值进行比较。由于5的ASCII值大于4的ASCII值,因此比较会返回false

答案 1 :(得分:4)

val()返回一个字符串。您必须将这些字符串值转换为数字:

if(Number($('#order_quantity').val()) < Number($('#available_quantity').val())) {
     // do something
} else {
     // do something
}

表达式失败的示例:

"24" < "124"
false

还有其他方法可以将字符串转换为数字(请参阅What's the fastest way to convert String to Number in JavaScript?):

  • Number(x)
  • parseInt(x, 10)(对于整数)
  • parseFloat(x)
  • +x;
  • ~~x(对于整数)
  • x | 0(对于整数)

...或使用Math方法。 x是字符串值。

答案 2 :(得分:2)

您需要将字符串转换为整数,因为使用jQuery val()方法读取的所有值都将作为字符串返回。

您也可以使用此代码 -

if(parseInt($('#order_quantity').val()) < parseInt($('#available_quantity').val()))

答案 3 :(得分:2)

$('#order_quantity').val()的类型是字符串'5' > '46' true就像'b' > 'a' true一样if (parseInt($('#order_quantity').val()) < parseInt($('#available_quantity').val())) { //---code to run---- } else { //--- code to show error--- } 。要将字符串值转换为int值,可以使用 parseInt 函数。要获得预期的结果,您的代码应该是:

{{1}}

答案 4 :(得分:2)

试试这些解决方案:

var order_quantity =  $('#order_quantity').val();
var available_quantity = $('#available_quantity').val();

if( Number( order_quantity ) < Number( available_quantity ) )
{ //---code to run---- }
else
{ //--- code to show error---}

Number

if (order_quantity - available_quantity  < 0)
{ //---code to run---- }
else
{ //--- code to show error---}

这会强制javascript处理数值计算。字符串将转换为数字。