You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 16:03:10