使用jquery更新表行中的合计
Update total in table row with jquery
我有一个表
<table>
<tbody>
<tr>
<td><input type="text" name="quantity" /></td>
<td><input type="text" name="price" /></td>
<td><input type="text" name="total" disabled />
</tr>
<tr>
<td><input type="text" name="quantity" /></td>
<td><input type="text" name="price" /></td>
<td><input type="text" name="total" disabled />
</tr>
<tr>
<td><input type="text" name="quantity" /></td>
<td><input type="text" name="price" /></td>
<td><input type="text" name="total" disabled />
</tr>
<tr>
<td><input type="text" name="quantity" /></td>
<td><input type="text" name="price" /></td>
<td><input type="text" name="total" disabled />
</tr>
</tbody>
</table>
当数量或价格发生变化时,如何更新总输入字段?
我想到了类似的东西
$('table tbody tr td').filter(':nth-child(1), :nth-child(2)').children('input').change(function() {
$(this).parent('td').siblings('td').filter(':nth-child(3)').val(?);
});
但这似乎有点不愉快。
您可以使用:
$('table tbody tr td').find('input').keyup(function() {
var total=0;
total=(parseInt($(this).parent('td').siblings('td').not(':nth-child(3)').find('input').val())||0)+(parseInt($(this).val())||0);
$(this).closest('tr').find('input:last').val(total)
});
工作演示
如果可以为数量、价格和总输入分配一些伪类,那么阅读和控制起来会非常容易。
类似这样的东西:
HTML
<table>
<tbody>
<tr>
<td><input type="text" class="qty" name="quantity" /></td>
<td><input type="text" class="prc" name="price" /></td>
<td><input type="text" class="total" name="total" disabled />
</tr>
<tr>
<td><input type="text" class="qty" name="quantity" /></td>
<td><input type="text" class="prc" name="price" /></td>
<td><input type="text" class="total" name="total" disabled />
</tr>
<tr>
<td><input type="text" class="qty" name="quantity" /></td>
<td><input type="text" class="prc" name="price" /></td>
<td><input type="text" class="total" name="total" disabled />
</tr>
<tr>
<td><input type="text" class="qty" name="quantity" /></td>
<td><input type="text" class="prc" name="price" /></td>
<td><input type="text" class="total" name="total" disabled />
</tr>
</tbody>
</table>
脚本
$('table tbody tr').find('.qty, .prc').on('keyup',function() {
var parent = $(this).parents('tr');
var quantity = parseInt(parent.find('.qty').val())||0;
var price = parseInt(parent.find('.prc').val())||0;
parent.find('.total').val(quantity*price);
});
检查此处的工作示例
就我个人而言,我不喜欢根据元素的位置来选择元素。如果你后来更改了它们,或者添加了另一个,你的代码就坏了。我会做一些类似的事情:
$(this).closest('tr').find('input[name=total]').val(?);
相关文章:
- jQuery-更新jQuery.ajax().done()中点击的图像
- 基于复选框 Jquery 更新文本框
- 根据复选框选择 jQuery 更新文本框
- JQuery:更新表内容花费的时间太长
- 如何使用Jquery更新数据确认属性中的消息
- Jquery更新到1.10.2后,Jquery Ajax Json对象未显示
- jQuery更新DOM并运行change()方法
- 使用jQuery更新选择的多个字段的数量
- 当原始内容通过jQuery更新时,我如何告诉PageDown更新其预览
- jQuery更新文本字段不起作用
- 有没有更好的方法可以用jquery更新图像的高度和宽度
- 如何使用jquery更新表coulmn
- 使用jQuery更新的Kendo UI网格值不会更新传递回来的模型
- 使用jQuery更新CSS属性
- PrimeFaces 命令按钮使用 jQuery 更新数据表内部
- 创建 Jquery 更新函数
- jquery 更新嵌套对象的键
- 如何使用 jQuery 更新表
- Drupal - Jquery 更新版本与灯箱冲突
- 使用 AJAX Jquery 更新 JSON