2012-08-14 142 views
0

我试图从JQuery检查两个文本字段的值。我需要比较美元金额,以查看新输入的值是否大于原始金额。结果不是我所期待的。第一个值通过PHP OrigAMTVal预填充,第二个值amtTOrefundVal由用户输入。下面的代码:与jquery比较两个值

$('#doREFUND').on("click", function() { 
    var amtTOrefundVal = $('.amtTOrefund').val(); 
    var OrigAMTVal  = $('.CustomerOrderTotal').val(); 

    var doamtTOrefund = parseInt(amtTOrefundVal).toFixed(2); 
    var doOrigAMT  = parseInt(OrigAMTVal).toFixed(2); 

    if(doamtTOrefund > doOrigAMT) {  
     var balance = OrigAMTVal - doamtTOrefund; 
     alert("BAD: $" + balance + " Over Limit"); 
    } else { 
     var balance = OrigAMTVal - doamtTOrefund; 
     alert("GOOD: $" + balance + " Left to Go"); 
    } 
}); 

这里有一个小提琴: http://jsfiddle.net/dM2Fr/2/

我知道我失去了一些东西,但我无法弄清楚。

+1

你的值是否领先0?您在使用* parseInt *时未指定基数,因此这可能会导致奇怪的结果。总是使用* parseInt(value,10)* – m90 2012-08-14 18:48:41

回答

4

toFixed返回一个字符串,只比较那些没有的值。

问题是你比较字符串和"174 > "1000"是否属实。

P.S.您应该使用parseInt(value, 10)

+1

非常好的一点,只是想到了关于toFixed自己...肯定'typeof ===“string”' – 2012-08-14 18:53:45

+0

十进制值呢?如果我做了174.99它不使用.99作比较? – Monty 2012-08-14 18:59:59

+0

@Monty:啊,没有想到这一点。将'parseInt'改为'parseFloat'。 – 2012-08-14 19:01:24