html - 如何从表列中的输入中获取值并将它们总结起来?
问题描述
我正在制作一个条目列表,该列表将自动累加金额并在底部显示总金额。我正在尝试在函数中实现 onchange,但不确定如何去做。如果值是固定的并且需要刷新页面,我当前的代码只会总结金额。
提前致谢。
var rows = $("#data tr:gt(0)");
var tamount;
rows.children("td:nth-child(3)").each(function() {
tamount += parseInt($(this).html());
});
$("#total_amount").html(tamount);
| No | Description | Amount |
| -- | ----------- | ------ |
| 1 | abc | 2.50 |
| 2 | efg | 1.90 |
| 3 | tyu | 5.00 |
| 4 | mno | 7.90 |
--------------------
Total Amount : 17.30
--------------------
<table id="data">
<tr>
<th>No</th>
<th>Description</th>
<th>Amount</th>
</tr>
<tr>
<td>1</td>
<td><input type="text" name="descrpt"></td>
<td><input type="number" name="amount"></td>
</tr>
<tr>
<td>2</td>
<td><input type="text" name="descrpt"></td>
<td><input type="number" name="amount"></td>
</tr>
<tr>
<td>3</td>
<td><input type="text" name="descrpt"></td>
<td><input type="number" name="amount"></td>
</tr>
</table>
<div>
<h5>Total Amount :<input type="number" name="total_amount" readonly></h5>
</div>
解决方案
在您的 javascript 中尝试此代码:
$(document).ready(function () {
$('input[name="total_amount"]').val(calcSum());
$('input[name="amount"]').change(function () {
$('input[name="total_amount"]').val(calcSum());
});
});
function calcSum() {
var tamount = 0;
$('input[name="amount"]').each(function() {
tamount += parseInt(($(this).val() ? $(this).val() : 0));
});
return tamount;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="data">
<tr>
<th>No</th>
<th>Description</th>
<th>Amount</th>
</tr>
<tr>
<td>1</td>
<td><input type="text" name="descrpt"></td>
<td><input type="number" name="amount"></td>
</tr>
<tr>
<td>2</td>
<td><input type="text" name="descrpt"></td>
<td><input type="number" name="amount"></td>
</tr>
<tr>
<td>3</td>
<td><input type="text" name="descrpt"></td>
<td><input type="number" name="amount"></td>
</tr>
</table>
<div>
<h5>Total Amount :<input type="number" name="total_amount" readonly></h5>
</div>
解释:
$('input[name="amount"]')
您可以直接使用来引用每个输入元素,而不是获取子元素$('input[name="amount"]').each()
将遍历每个数字字段- 我创建了一个新函数
calcSum()
来完成计算部分。 - 您应该使用
.val()
输入元素而不是.html()
- 注意,
change()
将要求您从现场失去焦点,或者,您可以使用keyup()
无需更改 html。
推荐阅读
- sockets - OCaml 刷新奇怪的行为(退出所有线程)
- python - 将烧瓶应用程序数据传递给其他 python 脚本
- azure - 为服务主体授予管理员同意
- javascript - 我不能在 javascipt 中使用这个正则表达式来拆分 '(' 的字符
- typescript - TypeScript:不确定我是否正确输入了这个返回承诺的函数
- c - 如何从C中的数组中删除重复元素
- r - 带有 .csv 文件的 ggplot2 中的条形图
- sql - 将 Sql 转换为 MonogoDb
- python - 为什么 Tkinter getvar() 返回 Booleanvar 的字符串类型?
- php - 如何将数据批量插入具有相同数据字段名称的 MySQL 数据库表中?