0

我正在我的表中进行一些操作,因此如果用户添加新行,则可以设置数量、单价,并且自动计算总数。这发生在每一行。我试图在添加每一行时累积表格下方的总数。否则在删除一行时应该减少。

到目前为止,我只得到我正在设置的行的总值。

$('.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);
});

可以在这个小提琴上看到例子

4

2 回答 2

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++;
     });
});
于 2012-11-15T16:14:27.233 回答
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


编辑

我已经更新了第一行以处理新行。

于 2012-11-15T16:23:07.070 回答