jQuery:汇总表行中的多个输入 [英] jQuery: sum up multiple inputs in table rows
问题描述
我有一个产品订购表,有不同尺寸的产品. 因此,对于每种产品,每种尺寸都有一个输入,且总和在行的末尾. 我确实有大约500行.
I have an order form for products, that are available in different sizes. So for every product there is one input for each size with the sum at the end of the row. I reality I have about 500 rows.
<table>
<tr>
<th>Product</th>
<th>Size 1</th>
<th>Size 2</th>
<th>Size 3</th>
<th>TOTAL</th>
</tr>
<tr>
<td>A</td>
<td><input type="text" class="productA"></td>
<td><input type="text" class="productA"></td>
<td><input type="text" class="productA"></td>
<td></td>
</tr>
<tr>
<td>B</td>
<td><input type="text" class="productB"></td>
<td><input type="text" class="productB"></td>
<td><input type="text" class="productB"></td>
<td></td>
</tr>
<tr>
<td>C</td>
<td><input type="text" class="productC"></td>
<td><input type="text" class="productC"></td>
<td><input type="text" class="productC"></td>
<td></td>
</tr>
</table>
我尝试了几种方法,但它从未想过.我只成功一次计算了所有输入,而不仅是单独计算了一行.
I tried several ways but it never wanted to work. I only succeeded in calculating ALL inputs at once but not only for one single row separately.
每次输入更改时,我都要计算最后一个td
中每一行的总和.
I want to calculate the sum of each row in the last td
everytime the input changes.
有人知道我该如何解决吗?
Has anyone an idea how I could solve this?
推荐答案
绑定input
事件处理程序以基于值输入和更新列.
Bind input
event handler to input and update column based on values.
$('table input').on('input', function() {
var $tr = $(this).closest('tr'); // get tr which contains the input
var tot = 0; // variable to sore sum
$('input', $tr).each(function() { // iterate over inputs
tot += Number($(this).val()) || 0; // parse and add value, if NaN then add 0
});
$('td:last', $tr).text(tot); // update last column value
}).trigger('input'); // trigger input to set initial value in column
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table>
<tr>
<th>Product</th>
<th>Size 1</th>
<th>Size 2</th>
<th>Size 3</th>
<th>TOTAL</th>
</tr>
<tr>
<td>A</td>
<td>
<input type="text" class="productA">
</td>
<td>
<input type="text" class="productA">
</td>
<td>
<input type="text" class="productA">
</td>
<td></td>
</tr>
<tr>
<td>B</td>
<td>
<input type="text" class="productB">
</td>
<td>
<input type="text" class="productB">
</td>
<td>
<input type="text" class="productB">
</td>
<td></td>
</tr>
<tr>
<td>C</td>
<td>
<input type="text" class="productC">
</td>
<td>
<input type="text" class="productC">
</td>
<td>
<input type="text" class="productC">
</td>
<td></td>
</tr>
</table>
如果要在只读文本框中输入值.
In case if you want to put value in a readonly textbox.
$('table input').on('input', function() {
var $tr = $(this).closest('tr'); // get tr which contains the input
var tot = 0; // variable to sore sum
$('input:not(:last)', $tr).each(function() { // iterate over inputs except last
tot += Number($(this).val()) || 0; // parse and add value, if NaN then add 0
});
$('td:last input', $tr).val(tot); // update input in last column
}).trigger('input'); // trigger input to set initial value in column
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table>
<tr>
<th>Product</th>
<th>Size 1</th>
<th>Size 2</th>
<th>Size 3</th>
<th>TOTAL</th>
</tr>
<tr>
<td>A</td>
<td>
<input type="text" class="productA">
</td>
<td>
<input type="text" class="productA">
</td>
<td>
<input type="text" class="productA">
</td>
<td>
<input type="text" readonly>
</td>
</tr>
<tr>
<td>B</td>
<td>
<input type="text" class="productB">
</td>
<td>
<input type="text" class="productB">
</td>
<td>
<input type="text" class="productB">
</td>
<td>
<input type="text" readonly>
</td>
</tr>
<tr>
<td>C</td>
<td>
<input type="text" class="productC">
</td>
<td>
<input type="text" class="productC">
</td>
<td>
<input type="text" class="productC">
</td>
<td>
<input type="text" readonly>
</td>
</tr>
</table>
这篇关于jQuery:汇总表行中的多个输入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!