我正在我的表中进行一些操作,因此如果用户添加新行,则可以设置数量,单位价格和总数将自动计算。这发生在每一行。当我添加每一行时,我试图在表格下面积累总数。否则应该在删除行时减少。
到目前为止,我只获得了我正在设置的行的总值。
$('.tablePuc, .tablePus, .tableQuantity').live('keyup', function () {
var $row = $(this).closest('tr'); // all based on parent row
var unitPc = $row.find('.tablePuc').val();
var unitPs = $row.find('.tablePus').val();
var qty = $row.find('.tableQuantity').val();
var imp = 0.21;
var totalSimp = unitPs * qty;
var totalCimp = unitPc * qty + ((unitPc * qty) * imp);
if (totalCimp) {
$row.find('.tableTotal').val(totalCimp);
} else if (totalSimp) {
$row.find('.tableTotal').val(totalSimp);
}
$('#labelResult').html(totalSimp);
$('#labelResult2').html(totalCimp);
});
可以在此fiddle
上看到示例答案 0 :(得分:0)
.live应该删除并使用.on而不是!
除此之外:
var rowCount = $('#table_id >tbody >tr').length; //rowCount = number of rows of the table tbody!
您可以在每次添加/删除后使用它来重新计算总行数,或者只是将其存储在变量中并根据需要增加/减少它。我很可能每次重新计算它,因为表格不大。
您也可以这样使用它:
sum=0;
$('#table_id >tbody >tr').children().eq(n).each(function(){ //n is the row column where u want to get the data
sum+=$(this).val();
});
如果你想一次性完成所有行孩子:
sum=[];
$('#table_id >tbody >tr').each(function(){
x=0;
$(this).children().each(function(){
sum[x]+=$(this).val();
x++;
});
});
答案 1 :(得分:0)
你应该迭代你表中的所有行...这样的事情应该有效:
$('table').on('keyup', '.tablePuc, .tablePus, .tableQuantity', updateTotal);
function updateTotal() {
var totalSimpGlobal = 0;
var totalCimpGlobal = 0;
$("#tableSo").find("tr:gt(0)").each(function() {
var $row = $(this); // all based on parent row
var unitPc = $row.find('.tablePuc').val();
var unitPs = $row.find('.tablePus').val();
var qty = $row.find('.tableQuantity').val();
var imp = 0.21;
var totalSimp = unitPs * qty;
totalSimpGlobal += totalSimp;
var totalCimp = unitPc * qty + ((unitPc * qty) * imp);
totalCimpGlobal += totalCimp;
if (totalCimp) {
$row.find('.tableTotal').val(totalCimp);
} else if (totalSimp) {
$row.find('.tableTotal').val(totalSimp);
}
});
$('#labelResult').html(totalSimpGlobal);
$('#labelResult2').html(totalCimpGlobal);
}
更新了小提琴:http://jsfiddle.net/3zV2G/3。
修改强>
我更新了第一行以处理新行。