用2位小数计算总计

时间:2015-01-26 10:00:39

标签: jquery

我试图获得总计2小数的结果。如果我添加3.56与4.28小计显示结果与小数,但总计显示.00小数。

html代码

<form>
<div>Quantity:
    <input type="text" class="qty">Unit price:
    <input type="text" class="unit">Amount:
    <input type='text' class='amount'>
</div>

<div>Quantity:
    <input type="text" class="qty">Unit price:
    <input type="text" class="unit">Amount:
    <input type='text' class='amount'>
</div>Total All:
<input type="text" class="result">

jquery代码

$(function () {
    $('.unit,.qty').on('change', function () {
        var unit = $(this).hasClass('unit') ? $(this).val() : $(this).siblings('.unit').val();
        var qty = $(this).hasClass('qty') ? $(this).val() : $(this).siblings('.qty').val();
        unit = unit || 0;
        qty = qty || 0;
        var val = unit >= 1 && qty >= 1 ? parseFloat(unit * qty) : 0;
        $(this).siblings('.amount').val(val.toFixed(2));
        var total = 0;
        var update = false;
        $('.amount').each(function () {
            val = parseFloat($(this).val()) | 0;
            total = val ? (parseFloat(total + val)) : total;
        });
        $('.result').val(total.toFixed(2));
    });
});

1 个答案:

答案 0 :(得分:1)

你使用三元和遍历逻辑有点过时了。试试这个:

$('.unit, .qty').on('change', function () {
    var $container = $(this).closest('div');
    var unit = $container.find('.unit').val() || 0;
    var qty = $container.find('.qty').val() || 0;
    var val = parseFloat(unit * qty);
    var total = 0

    $container.find('.amount').val(val.toFixed(2));
    $('.amount').each(function () {
        total += parseFloat($(this).val() || 0);
    });    
    $('.result').val(total.toFixed(2));
});

Example fiddle