0

这里有张桌子

SUM | <input type="text"> | <input type="text"> |
    | <input type="text"> | <input type="text"> |
    | <input type="text"> | <input type="text"> |
SUM | <input type="text"> | <input type="text"> |
    | <input type="text"> | <input type="text"> |
FOO | <input type="text"> | <input type="text"> |
BAR | <input type="text"> | <input type="text"> |

当输入值更改时,我想获得“SUM 行”下方的列总和。如果还有其他列前 FOO BAR,则不应计算总和。

这里的方法是什么?虚拟的想法:每一列都有参考,它的值将被求和。

小提琴快速入门:http: //jsfiddle.net/igos/vNxzu/

编辑 它应该总结到下一个总和行。

row 0 col 0  = row 1 col 0  + row 2 col 0
row 0 col 1  = row 1 col 1  + row 2 col 1
row 3 col 0  = row 4 col 0
row 3 col 1  = row 4 col 1

它应该是动态的,所以当更多行出现时,它会自动添加更多行。

4

1 回答 1

2

尝试

$('tr.sumToUp input').change(function(){
    var $this = $(this), $row = $this.closest('tr'), $sum = $row.prevAll('.sumToMe').first(), $rows = $sum.nextUntil('.sumToMe', '.sumToUp'), index = $this.closest('td').index();

    var sum = 0;
    $rows.each(function(){
        var val = $(this).find('td').eq(index).find('input').val();
        sum += (+val);
    })
    $sum.find('td').eq(index).find('input').val(sum);
});

演示:小提琴

于 2013-05-14T11:45:48.903 回答