2012-08-14 2 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 (값, 10) * – m90

답변

4

toFixed은 문자열을 반환하고, 값을 비교하지 않고 그냥 비교합니다.

문제는 문자열을 비교하고 "174 > "1000"이 true라는 것입니다.

P. parseInt(value, 10)을 사용해야합니다.

+1

아주 좋은 지적, 그냥 toFixed에 대한 생각을 실현 ... 확실히'typeof === "string"' –

+0

십진수는 어떨까요? 내가 174.99의 경우 비교를 위해 .99를 사용하지 않습니까? – Monty

+0

@Monty : 아, 그렇게 생각하지 않았어. 'parseInt'를'parseFloat'으로 변경하십시오. –

관련 문제