SO - 16541695
by igos
HTML
<table>
<tr class="sumToMe" style="background-color:grey;">
<td>Sum</td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
</tr>
<tr class="sumToUp">
<td></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
</tr>
<tr class="sumToUp">
<td></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
</tr>
<tr class="sumToMe" style="background-color:grey;">
<td>Sum</td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
</tr>
<tr class="sumToUp">
<td></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11" /></td>
<td><input type="text" value="11"...
JavaScript
$('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);
});