jQuery - 奇怪的错误,其中100.00< 2.50

时间:2012-03-10 17:44:35

标签: javascript numbers

jQuery / JavaScript有一个奇怪的问题。我正在使用此代码:

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工作正常。

有什么想法吗?谢谢你的帮助!

2 个答案:

答案 0 :(得分:3)

设置minimumPercent时尝试ParseFloat。

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

我认为引擎正在将一个字符串与一个浮点数进行比较,从而将你的浮点数转换回一个字符串,当你这样做时,100.00&lt; 2.50 = true从左到右按字母顺序比较。

麦克

答案 1 :(得分:1)

并且使用toFixed会将你的浮点值转换为字符串,所以为了比较,总是浮动值

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));
    }
});