我试图获得总计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));
});
});
答案 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));
});