父表单传值至子表单后实现字段乘40自动赋值的技术问询
解决方案
问题核心是原代码仅监听字段的change事件,父表单传入的初始值不会触发该事件,因此需要在页面加载完成后主动执行一次计算逻辑,同时保留对手动修改的监听。
修改后的代码
const pallet = 40; // 抽离计算逻辑为独立函数 function calculatePalletValue() { const inputVal = $('input[name="FreeNumberField_17"]').val(); // 检查值是否有效,避免NaN if (!isNaN(inputVal) && inputVal !== '') { const result = +(pallet * parseFloat(inputVal)).toFixed(3); $('input[name="FreeNumberField_07"]').val(result); } } $(document).ready(function() { // 页面加载完成后立即执行一次,处理父表单传入的初始值 calculatePalletValue(); // 保留原有的change事件监听,处理手动修改的情况 $("#FreeNumberField_17").change(calculatePalletValue); });
关键改动说明
- 把计算逻辑封装成独立函数
calculatePalletValue,复用代码且便于维护。 - 在页面就绪时先调用一次函数,确保父表单传入的初始值能被自动计算并赋值。
- 增加值的有效性检查,避免输入非数字时出现
NaN的问题。 - 用
parseFloat显式转换输入值,确保计算时的类型正确。
内容的提问来源于stack exchange,提问作者Jerry
相关产品推荐
相关产品推荐

