JQuery - странная ошибка, где 100,00 <2,50 - PullRequest
1 голос
/ 10 марта 2012

Странная проблема с 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 ]

3 голосов
/ 10 марта 2012

Попробуйте ParseFloat, когда вы установите минимальный процент.

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

Я думаю, что движок сравнивает строку с плавающей точкой, таким образом, преобразовывая ваш плавающий элемент обратно в строку, и когда вы делаете это, 100,00 <2,50 = true, выполняйте сравнение слева направо в алфавитном порядке. </p>

Mike

1 голос
/ 10 марта 2012

, а также использование 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));
    }
});
...