2012-08-14 141 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