-1

このようなテーブルに複数の行があります。

<tr>
<td>Item 1</td>
<td><input type=TEXT name="item_name[]"  /></td>
<td><input type=TEXT name="item_desc[]"  /></td>
<td><input type=TEXT name="item_type[]"  /></td>
<td><input type=TEXT name="item_price[]" /></td>
<td><input type=TEXT name="item_setup[]" /></td>
<td><input type=TEXT name="item_quant[]" /></td>
</tr>

等...

ユーザーは動的に行を追加したり削除したりできます。

すべての item_price*item_quant の合計を表示し、キーアップまたはぼかしまたは変更時にこのビット内に表示する JS 部分を実行しようとしています。

<tr><td id=total></td></tr>

編集:これまでに次のことを試しました。以下の updateTotal() を呼び出す各フィールドに「onblur」を追加しました。

function updateTotal() {
var total = 0; 

$("input[id^='item_quant[']").each(function() {
    if (!isNaN(this.value) && this.value.length != 0) {
        total += parseFloat(this.value);
    }
});

$("#total").val(total);
}

しかし、まだ行きません

4

3 に答える 3

1

試す

$('table').on('change', 'input[name="item_price[]"], input[name="item_quant[]"]', function() {
    var total = 0;
    $('table').find('tr').each(function() {
        var $this = $(this);
        var amount = (parseFloat($this.find('input[name="item_price[]"]').val(), 10) || 0)
        * (parseFloat($this.find('input[name="item_quant[]"]').val(), 10) || 0);
        total += amount;
    })

    $('#total').text(total)
})

デモ:フィドル

于 2013-08-27T03:40:25.567 に答える
0

これを行うには、各要素の値を整数に変換してから合計計算を実行します。

var add = 0;
$("input").each(function()
{
     add += Number($(this).val());//for integer
     //add += parseFloat($(this).val());//for float or decimal
});
$("#total").html("Sum of all textboxes is : " + add);
于 2013-08-27T03:39:25.110 に答える