.NET 6局部页调用NumericBox报错:初始化前无法调用方法
解决jQuery 3.6.1下Ajax加载局部页的NumericBox初始化错误
以下是针对你遇到的错误的具体解决方案:
确保动态加载元素的NumericBox完成初始化
Ajax加载的局部页元素是动态插入主页面DOM的,原有初始化逻辑可能无法覆盖这些新元素。必须在局部页内容插入后,手动初始化所有.weighting元素的NumericBox组件,再执行求和操作:$.ajax({ url: '你的局部页接口地址', success: function(pageHtml) { var targetContainer = $('#局部页容器ID'); targetContainer.html(pageHtml); // 初始化动态加载的NumericBox组件 targetContainer.find(".weighting").NumericBox(); // 执行求和与赋值 $(".weighting-total").NumericBox("setValue", $(".weighting").NumericBoxSum()); } });在自定义求和函数中添加初始化检查
修改NumericBoxSum函数,在调用isNumeric方法前先确认组件已初始化,未初始化则立即初始化:$.fn.NumericBoxSum = function() { let total = 0; this.each(function() { const $current = $(this); // 检查组件实例是否存在,不存在则初始化 if (!$current.data('NumericBox')) { $current.NumericBox(); } // 执行数值检查并累加 if ($current.NumericBox("isNumeric")) { total += parseFloat($current.NumericBox("getValue")) || 0; } }); return total; };调整局部页JS代码的执行时机
局部页中的业务代码不要直接全局执行,必须放在DOM元素插入完成后再调用。建议将局部页的逻辑封装成函数,由主页面的Ajax回调触发执行,避免元素未挂载时就调用组件方法。排查jQuery 3.x兼容性问题
jQuery 3.6.1对DOM操作、事件绑定的细节做了调整,部分旧版NumericBox插件可能存在兼容问题。检查插件源码中是否使用了jQuery 3.x已废弃的API(如bind()、live()),替换为on()等新API,或升级插件到兼容jQuery 3.x的版本。
内容的提问来源于stack exchange,提问作者Gauravsa
相关产品推荐
相关产品推荐

