2012-03-10 11 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); 
    } 
}); 

私が書いたこのコードは、入力ボックス(テキスト)の値を変更するので、ユーザが入力した値はお金のフォーマット(EG: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

をフロート比較のためになるようtoFixedを使用して、文字列にあなたのfloat値を変換します。 – DOK

+0

ええ、完全にそのvarについて忘れました。ありがとう! :) –

1

と常に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)); 
    } 
});