我有一个表单,用户可以创建无限数量的行(使用jquery-添加新行)来添加多个产品信息。当他们创建新行时,代码如下所示。
现在我要做的是每当用户输入产品数量和产品价格的价值时,我想立即计算总数(product quantity* product price)
并将结果放在total[]
输入中然后调整表单底部的total amount
输入。
当我使用jquery输入固定数量时,我知道如何执行此操作,但由于在这种情况下输入量未得到修复,因此我对如何实现此操作有所了解。
你能告诉我吗?提前致谢:)
<tr>
<td><input type="text" name="name[]" id="name_1" value=""></td>
<td><input type="text" name="quantity[]" id="quantity_1" value=""></td>
<td><input type="text" name="rate[]" id="rate_1" value=""></td>
<td><input type="text" name="total[]" id="total_1" value=""></td>
</tr>
<tr>
<td><input type="text" name="name[]" id="name_2" value=""></td>
<td><input type="text" name="quantity[]" id="quantity_2" value=""></td>
<td><input type="text" name="rate[]" id="rate_2" value=""></td>
<td><input type="text" name="total[]" id="total_2" value=""></td>
</tr>
<!-- I have N number of rows like above. and at the bottom I have input for total -->
<tr>
<td> </td>
<td> </td>
<td> </td>
<td><input type="text" name="totalamount" id="totalamount" value=""></td>
</tr>
答案 0 :(得分:2)
以下是一种可能的解决方案:
$(":text[name='quantity[]'], :text[name='rate[]']").on("change", function() {
var totalamount = 0;
$("tr").each(function() {
var quantity = +$(this).find(":text[name='quantity[]']").val() || 0;
var rate = +$(this).find(":text[name='rate[]']").val() || 0;
var subtotal = quantity * rate;
$(this).find(":text[name='total[]']").val(subtotal);
totalamount += subtotal;
});
$("#totalamount").val(totalamount);
});