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/

EDIT 次の合計行まで合計する必要があります。

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 に答える