如何使用jquery计算多个输入的发票总金额?
我使用 foreach
循环从 order_items
表中检索所有商品,然后我想修改每个商品的数量和价格。
我想要的是使用 jQuery 立即计算所有项目的 subtotal
和 total
数量,但我找不到让它工作的方法。
$(".price").on('change', function() {
var subtotal = 0;
var total = 0;
var total_ht = $("#total_ht").val();
var price = $(this).val();
var id = $(this).attr('data-id');
var quantity = $("#quantity-" + id).val();
subtotal = price * quantity;
total = subtotal + (subtotal * 20 / 100)
// Single row subtotal
$("#subtotal-" + id).val(subtotal);
// Single row total
$("#total-" + id).val(total);
// All rows subtotal
total_ht = parseFloat(total_ht + subtotal);
$("#total_ht").val(total_ht);
})
$(".quantity").on('change', function() {
var subtotal = 0;
var total = 0;
var total_ht = $("#total_ht").val();
var quantity = $(this).val();
var id = $(this).attr('data-id');
var price = $("#price-" + id).val();
subtotal = price * quantity;
total = subtotal + (subtotal * 20 / 100);
// Single row subtotal
$("#subtotal-" + id).val(subtotal);
// Single row total
$("#total-" + id).val(total);
// All rows subtotal
$("#total_ht").val(total_ht);
})
<table>
<tbody>
<?php foreach($orderItems as $item): ?>
<tr>
<td>
<input type="number" name="quantity[]" class="quantity" value="<?= $item->quantity ?>" data-id="<?= $item->id ?>" id="quantity-<?= $item->id ?>">
</td>
<td>
<input type="number" name="price[]" class="form-control price" data-id="<?= $item->id ?>" value="<?= $item->unity_price ?>" id="price-<?= $item->id ?>">
</td>
<td>
<input type="number" name="subtotal[]" class="subtotal" data-id="<?= $item->id ?>" value="<?= $item->total_ht_price ?>" id="subtotal-<?= $item->id ?>" readonly>
</td>
<td>
<input type="number" name="total[]" class="total" data-id="<?= $item->id ?>" value="<?= $item->total_ttc_price ?>" id="total-<?= $item->id ?>" readonly>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<table class="table table-white">
<tbody>
<tr>
<th class="text-left">Total HT
</th>
<td class="text-right">
<input type="number" name="total_ht" id="total_ht" class="form-control total_ht" readonly value="0">
</td>
</tr>
<tr>
<th class="text-left">TVA
</th>
<td class="text-right">
<input type="number" name="totalTVA" id="totalTVA" class="form-control totalTVA" readonly value="20">
</td>
</tr>
<tr>
<th class="text-left">Total TTC
</th>
<td class="text-right">
<input type="number" name="totalTTC" id="totalTTC" class="totalTTC" readonly value="0">
</td>
</tr>
</tbody>
</table>
I retrieve all items from order_items
table using a foreach
loop and then I want to modify quantity and prices of each item.
What I want is to calculate instantly the subtotal
and total
amount of all items using jQuery but I couldn't find a way to make it work.
$(".price").on('change', function() {
var subtotal = 0;
var total = 0;
var total_ht = $("#total_ht").val();
var price = $(this).val();
var id = $(this).attr('data-id');
var quantity = $("#quantity-" + id).val();
subtotal = price * quantity;
total = subtotal + (subtotal * 20 / 100)
// Single row subtotal
$("#subtotal-" + id).val(subtotal);
// Single row total
$("#total-" + id).val(total);
// All rows subtotal
total_ht = parseFloat(total_ht + subtotal);
$("#total_ht").val(total_ht);
})
$(".quantity").on('change', function() {
var subtotal = 0;
var total = 0;
var total_ht = $("#total_ht").val();
var quantity = $(this).val();
var id = $(this).attr('data-id');
var price = $("#price-" + id).val();
subtotal = price * quantity;
total = subtotal + (subtotal * 20 / 100);
// Single row subtotal
$("#subtotal-" + id).val(subtotal);
// Single row total
$("#total-" + id).val(total);
// All rows subtotal
$("#total_ht").val(total_ht);
})
<table>
<tbody>
<?php foreach($orderItems as $item): ?>
<tr>
<td>
<input type="number" name="quantity[]" class="quantity" value="<?= $item->quantity ?>" data-id="<?= $item->id ?>" id="quantity-<?= $item->id ?>">
</td>
<td>
<input type="number" name="price[]" class="form-control price" data-id="<?= $item->id ?>" value="<?= $item->unity_price ?>" id="price-<?= $item->id ?>">
</td>
<td>
<input type="number" name="subtotal[]" class="subtotal" data-id="<?= $item->id ?>" value="<?= $item->total_ht_price ?>" id="subtotal-<?= $item->id ?>" readonly>
</td>
<td>
<input type="number" name="total[]" class="total" data-id="<?= $item->id ?>" value="<?= $item->total_ttc_price ?>" id="total-<?= $item->id ?>" readonly>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<table class="table table-white">
<tbody>
<tr>
<th class="text-left">Total HT
</th>
<td class="text-right">
<input type="number" name="total_ht" id="total_ht" class="form-control total_ht" readonly value="0">
</td>
</tr>
<tr>
<th class="text-left">TVA
</th>
<td class="text-right">
<input type="number" name="totalTVA" id="totalTVA" class="form-control totalTVA" readonly value="20">
</td>
</tr>
<tr>
<th class="text-left">Total TTC
</th>
<td class="text-right">
<input type="number" name="totalTTC" id="totalTTC" class="totalTTC" readonly value="0">
</td>
</tr>
</tbody>
</table>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是我使用输入事件的委托版本
,因为它也会在粘贴时触发
Here is a delegated version
I use input event since it triggers on paste too