请求实现三个输入框联动:输入验证与自动计算填充功能
解决表单输入限制与自动计算问题
我看了你的需求和代码,发现主要问题出在jQuery引用不完整、事件监听逻辑覆盖不全以及数值校验/计算的边界情况处理缺失这几个地方。下面是修复后的完整代码,完全满足你的需求:
<!DOCTYPE html> <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> </head> <body> <div> <label>总服务数: </label> <input type="number" id="totalofservices" name="totalofservices" placeholder="输入总服务数"> </div> <div> <label>达标服务数: </label> <input type="number" id="totalontarget" name="totalontarget" placeholder="输入达标服务数"> </div> <div> <label>未达标服务数: </label> <input type="number" id="totalofftarget" name="totalofftarget" readonly> </div> <script> $(document).ready(function() { // 监听总服务数和达标服务数的输入事件 $('#totalofservices, #totalontarget').on('input change', function() { const totalServices = parseInt($('#totalofservices').val()) || 0; let onTarget = parseInt($('#totalontarget').val()) || 0; // 校验达标服务数不能超过总服务数 if (onTarget > totalServices) { onTarget = totalServices; $('#totalontarget').val(onTarget); alert('达标服务数不能超过总服务数哦'); } // 自动计算未达标服务数 const offTarget = totalServices - onTarget; $('#totalofftarget').val(offTarget < 0 ? 0 : offTarget); }); }); </script> </body> </html>
关键修复点说明:
- 补全jQuery引用:把你之前截断的脚本链接换成完整的
jquery.min.js地址,确保jQuery能正常加载 - 覆盖所有触发场景:同时监听
input和change事件,不管用户是手动输入、粘贴还是通过上下箭头调整数值,都能触发逻辑 - 处理空值/非数字情况:用
|| 0把空值或非数字输入转为0,避免出现NaN的问题 - 严格数值校验:如果达标服务数超过总服务数,自动将其修正为总服务数,并给出提示
- 自动计算逻辑优化:总服务数变化时也会重新计算未达标数,确保数值始终同步
- 设置未达标框为只读:避免用户手动修改这个自动计算的数值,保证数据一致性
内容的提问来源于stack exchange,提问作者gtroop
相关产品推荐
相关产品推荐

