
本教程详解如何使用 jquery 实时计算表格各行“good”与“no good”输入值之和,与预设“total”值比对并以颜色标识校验结果,同时仅当所有行校验通过且总和一致时启用提交按钮。
本教程详解如何使用 jquery 实时计算表格各行“good”与“no good”输入值之和,与预设“total”值比对并以颜色标识校验结果,同时仅当所有行校验通过且总和一致时启用提交按钮。
在数据录入类表格应用中,常需对每行多个数值输入项(如合格数、不合格数)进行实时求和,并与该行预设的理论总量(如“Total”列)进行一致性校验。本方案提供一套健壮、可复用的 jQuery 实现逻辑,涵盖三重核心能力:逐行求和渲染、视觉化校验反馈、全局提交条件控制。
✅ 核心逻辑拆解
逐行求和与实时渲染
每次用户在任意<input>中输入(keyup事件),触发checkAndUpdateTable()函数。该函数遍历每一行<tr>,提取首列文本值(<code>td:eq(0))作为期望总量total;再遍历当前行内所有<input>,累加其数值(Number(val) || 0确保非数字输入不中断计算),结果写入该行最后一列(td:last),并根据qty === total动态设置文字颜色为绿色(通过)或红色(不通过)。-
提交按钮智能启停
enableDIsableSubmit()不再依赖模糊的:contains(2)匹配(易出错),而是精确计算所有行 Total 列的总和(finalTotal)与所有行 Check 列显示值的总和(finalCheck)。仅当二者严格相等 且 均不为零时,才启用提交按钮:$('#submitBtn').prop('disabled', !(finalTotal === finalCheck && finalTotal > 0));此设计避免了单行校验通过但整体失衡的误判,确保业务逻辑完整性。
初始化与事件绑定
使用$(function(){ ... })确保 DOM 加载完成即执行一次checkAndUpdateTable(),完成初始状态渲染;后续仅监听keyup(比input更兼容旧版浏览器),兼顾性能与稳定性。
? 完整可运行代码示例
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
⚠️ 注意事项与最佳实践
-
输入类型优化:将
<input type="text">改为<input type="number" min="0">可原生限制非法输入,减少 JavaScript 校验负担。 -
空值鲁棒性:
Number(val) || 0和parseInt(..., 10) || 0确保空字符串、null或非数字内容均被安全转换为0,避免NaN传播。 -
性能考量:对于超大表格(>100 行),可考虑节流(
throttle)keyup事件,但本例中直接调用已足够高效。 -
可扩展性:若未来增加新列(如“Rework”),只需修改
$('input', $row)选择器范围,无需重构主逻辑。
通过以上实现,您将获得一个响应迅速、逻辑清晰、易于维护的表格数值校验系统,完美支撑生产环境下的数据质量管控需求。










