При добавлении новой строки счета-фактуры. Я хочу получить промежуточный итог в последнем поле. Только первая строка работает правильно. когда я добавляю новую строку, что подсчет строк не происходитДинамическое поле ввода промежуточного итога в строке jQuery
Номер: Нет. : Item Desc: Цена: ставка налога. : Sub Total: Я хочу, чтобы промежуточный итог для каждого рассчитывался, как только количество и цена вводились в каждой строке. Используя jquery или javascript.
$(function() {
// Append Invoice Line
$(document).on('click', '#addnewitem', function() {
var currentTable = $(this).closest('table').attr('id');
$('#' + currentTable).append('<tr><td><div class="col-sm-6 col-lg-12"><input type="Client Name" class="form-control" id="c_name" placeholder="Item"></div></td><td><div class="col-sm-6 col-lg-12"><textarea class="form-control" placeholder="Description" rows="2" > </textarea></div></td><td><div class="col-sm-6 col-lg-12"><input type="Client Name" class="form-control" id="item_price" placeholder="Item Price" name="item_price"></div></td><td><div class="col-sm-6 col-lg-12"><select name="tax" class="form-control" id="tax"><option value="0">None</option><option value="12.5">(12.5%) Service Tax </option></select></div></td><td><div class="col-sm-6 col-lg-12"><input type="Client Name" class="form-control price" id="item_tax" placeholder="Tax Amount" name="item_tax"></div></td><td><div class="col-sm-6 col-lg-12"><input type="Client Name" class="form-control price" id="sub_total" placeholder="Sub Total" name="sub_total[]"></div></td><td><button type="button" id="removeItem" class="btn btn-default removeItem"><span class="glyphicon glyphicon-trash"></span></td></tr>');
});
//Remove Invoice Line
$(document).on('click', '#removeItem', function() {
var currentTable = $(this).closest('table').attr('id');
$(this).closest('tr').remove();
calculateTableSum(currentTable);
calculateTotal();
});
function calculateSum() {
var currentTable = $(this).closest('table').attr('id');
calculateTableSum(currentTable);
}
function calculateTableSum(currentTable) {
var sum = 0;
$('#' + currentTable + ' input#sub_total').each(function() {
//add only if the value is number
if(!isNaN(this.value) && this.value.length!=0) {
sum += parseFloat(this.value);
}
});
//.toFixed() method will roundoff the final sum to 2 decimal places
$('#' + currentTable + ' input.sumamtcollected').val(sum.toFixed(2));
}
$(document).on('change', 'input#sub_total', calculateSum);
$('#tax').on('change', function() {
var currentTable = $(this).closest('table').attr('id');
var itemprice = $('#item_price').val();
var taxrate = $('#tax').val();
var tax = taxrate * itemprice /100;
var total = parseFloat(itemprice) + parseFloat(tax);
$('#item_tax').val(tax.toFixed(2));
$('#sub_total').val(total.toFixed(2));
calculateTableSum(currentTable);
calculateTotal();
});
});
См. Обновленный ответ ниже. Сначала я неправильно читаю. – Tomanow