Отсутствует ноль в центах на одном поле JavaScript

Есть одно поле формы, в котором отсутствует ноль в центах. поле формы является полным.

остальные в порядке ( total_t и total_tax работают нормально). Я попробовал несколько вещей, но он либо перестает работать, либо просто не добавляет ноль в конце расчета.

Например, если продукт равен 0,20, он отображается как 0,2 и пропускает ноль на конце в общем поле. но налог и после налогов работают нормально

<script>
    $('document').ready(function(){


        $('.input-qty').on('input', function(){
            var total = 0;

            var qty = $(this).val();
            var price_single = $(this).parent().parent().parent().find('.input-price-single').val();

            $(this).parent().parent().parent().find('.input-price-total').val(parseFloat(qty * price_single).toFixed(2));

            $('.input-price-total').each(function(){
               total += Number($(this).val());
            });

            total_t = Number(parseFloat(total).toFixed(2));
            total_tax = parseFloat((total_t * 0.10) + total_t).toFixed(2);

            $('.input-total').val(total_t);
            $('.input-total-tax').val(total_tax);
        });

    });
</script>

так что я думаю, что это был бы этот раздел здесь:

$(this).parent().parent().parent().find('.input-price-total').val(parseFloat(qty * price_single).toFixed(2));

            $('.input-price-total').each(function(){
               total += Number($(this).val());

1 ответ

Решение

В вашем коде есть несколько "неправильных" вещей. (И все это в вашем разделе комментариев тоже).

Я постараюсь исправить их, собрав воедино ответы (но на самом деле благодарность принадлежит тем, кто это предложил).

<script>
    $('document').ready(function(){
        $('.input-qty').on('input', function(){
            var total = 0;
            var qty = $(this).val();
            var parent = $(this).parent().parent().parent();
            var price_single = $(parent).find('.input-price-single').val();

            $(parent).find('.input-price-total').val((qty * price_single).toFixed(2));

            $('.input-price-total').each(function(){
               total += Number($(this).val());
            });

            $('.input-total').val(total.toFixed(2));
            $('.input-total-tax').val((total * 1.10).toFixed(2));
        });
    });
</script>

У меня нет соответствующего HTML-кода для этого, поэтому я не могу попробовать его на скрипке или чем-то еще, так что это исключительно из головы. (Непроверенные)

Ваша ошибка упирается в строки:

total_t = Number(parseFloat(total).toFixed(2));
$('.input-total').val(total_t);

В этих строках вы присваиваете результат ваших итоговых вычислений, проанализированных на число с плавающей запятой, проанализированных на строку, а затем приведенных к числу (и именно в этом и заключается настоящая проблема).

Это означает, что вместо назначения строки (с правильным количеством цифр) полю, вы назначаете переменную типа "число", которая предполагает форматирование, которое она считает "правильным".

Теперь, если вы не хотите принимать все мои исправления (в конце концов, их довольно мало и они также не проверены), вы можете выполнить что-то вроде:

total_t = Number(parseFloat(total));
$('.input-total').val(total_t.toFixed(2));

Это должно исправить вашу проблему.

Другие вопросы по тегам