2012-03-10 13 views
1

jQuery/JavaScript有一個奇怪的問題。我使用此代碼:jQuery - 奇怪的錯誤,其中100.00 <2.50

var minimumPercent = $('.donationTextBox').val(); 

$('.donationTextBox').change(function() { 
    var donationAmount = parseFloat($('.donationTextBox').val()); 
    donationAmount = donationAmount.toFixed(2); 

    if(donationAmount < minimumPercent || donationAmount == "NaN") { 
     $('.donationTextBox').val(minimumPercent); 
    } 
    else { 
     $('.donationTextBox').val(donationAmount); 
    } 
}); 

我寫這段代碼改變輸入框(文本),這樣的價值由用戶輸入的值在貨幣格式(例如:96.49),並檢查確保它不低於minimumPercent中的金額。如果是,那麼它會將值更改爲minimumPercent
我遇到的問題是,如果minimumPercent擁有2.50和用戶輸入100.00,由於一些奇怪的原因,它假定100.00低於2.50。雖然,200.00工作正常。

任何想法?謝謝您的幫助!

回答

3

當您設置minimumPercent時嘗試ParseFloat。

var minimumPercent = ParseFloat($('.donationTextBox').val()); 

我認爲是發動機比較字符串的浮動,從而把你的浮回字符串,當你做到這一點100.00 < 2.50 =真正盡到左至右按字母順序排列的比較。

邁克

+0

聽上去的確它比較字符串值。 – DOK 2012-03-10 17:59:16

+0

是的,完全忘了那個變種。謝謝! :) – 2012-03-10 18:27:19

1

,並使用toFixed將您的浮點值轉換爲字符串,這樣比較永遠UE的浮動值

var minimumPercent = parseFloat($('.donationTextBox').val()); 

$('.donationTextBox').change(function() { 
    var donationAmount = parseFloat($('.donationTextBox').val()); 

    if(donationAmount < minimumPercent || donationAmount == "NaN") { 
     $('.donationTextBox').val(minimumPercent.toFixed(2)); 
    } 
    else { 
     $('.donationTextBox').val(donationAmount.toFixed(2)); 
    } 
});