在一个字段javascript上缺少零美分

时间:2014-08-21 01:36:11

标签: 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 个答案:

答案 0 :(得分: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);

在这些行中,您将解析的总计算结果分配给浮点数,解析为字符串然后转换为数字(这就是真正问题所在的位置)。

这意味着,您不是将字符串(具有正确的数字位数)分配给字段,而是指定一个类型为“number”的变量,该变量假设它认为格式为“正确”。

现在,如果你不想采取我所有的更正(毕竟它们是相当多的,也是未经测试的),你可能会推出类似的东西:

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

这可以解决您的问题。