0

データが既存の行に挿入されたときに新しいテーブル行を追加するコードがいくつかあります。

ここで実際のコードを見ることができます

製品を入力すると、新しい行が一意の入力名でテーブルに追加されます。

次に、ユーザーは価格と数量を入力する必要があります。

私が欲しいのは2段階の計算です。price * qty入力ボックスの[合計]に、その特定の行の合計が必要です。次に、divgrandtotalにすべての入力ボックスの合計を表示させます。すべて、ユーザーが挿入する行数に応じて動的に表示されます。

通常、私はただ使用します:

function fill() {
    var txt8 = document.getElementById("TextBox8").value;
    var txt9 = document.getElementById("TextBox9").value;
    document.getElementById("TextBox10").value = txt8 + txt9;
}

ただし、これは、名前とIDがわかっている静的静的テーブル用です。動的に生成されたテーブルでこれを機能させるにはどうすればよいですか?

申し訳ありませんが、フィドルリンクを提供するのを忘れました:http://jsfiddle.net/yUfhL/230/

4

1 に答える 1

2

で始まるIDを持つすべての入力を取得するにはlinetotal、jQueryで次のように記述します。

$('input[id^=linetotal]')

ここで、合計を計算するには、コレクションを繰り返し処理します。

var total = 0;
$('input[id^=linetotal]').each(function() { 
    total += parseInt(this.value, 10) || 0; 
});

次に、出力:

$('#grandtotal').text(total);

編集

最初にすべての行の行の合計を計算するには、次のようにそれらを反復処理できます。

$('table.order-list tr').each(function() {
   var price = parseInt( $('input[name=price]', this).val(), 10 );
   var qty   = parseInt( $('input[name=qty]'  , this).val(), 10 );
   $('input[id^=linetotal]', this).val(price * qty);
});

もちろん、常にすべての行を繰り返す必要はありません。変更イベントでは、現在の行にのみ関心があります。現在の行には、$(this).closest('tr')

于 2013-03-27T13:48:57.737 に答える