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

jQuery businessHours插件问题:初始isActive为false却被设为true

解决businessHours jQuery插件初始化时isActive:false被自动设为true的问题

我之前在使用这个插件时也碰到过类似的诡异问题,给你几个实用的排查和解决方向:

  • 检查初始化JSON数据的语法完整性
    你提供的示例数据最后有一段{"..."],看起来是截断或者格式错误的。JSON语法错误会导致插件无法正确解析数据,进而触发默认行为(比如把天数默认设为激活状态)。请确保你的operationTime数组每个对象都正确闭合,逗号、括号没有遗漏或错误,比如每个对象都应该是{"isActive":false,"timeFrom":null,"timeTill":null}这样的完整格式,数组整体用[]包裹,内部用逗号分隔每个元素。

  • 确认插件初始化的默认配置
    有些版本的businessHours插件可能默认将所有天数设为isActive:true,即使你在数据里指定了false。你可以在初始化插件时,明确添加全局默认配置来覆盖这个行为,比如:

    $('.target-element').businessHours({
      data: operationTime,
      defaultIsActive: false // 强制默认未设置的天数为非激活状态
    });
    

    具体的配置项名称可以参考你使用的插件版本的文档,确保参数名正确。

  • 预处理初始化数据
    如果插件本身的解析逻辑有问题,你可以在传入插件前手动预处理数据,确保每个天数的isActive字段都被正确设置:

    // 遍历数组,确保isActive字段明确为false或true
    operationTime.forEach(day => {
      // 如果isActive未定义或为null,强制设为false
      if (day.isActive === undefined || day.isActive === null) {
        day.isActive = false;
      }
      // 同时确保timeFrom和timeTill在非激活时为null(可选,符合插件预期格式)
      if (!day.isActive) {
        day.timeFrom = null;
        day.timeTill = null;
      }
    });
    
    // 再执行插件初始化
    $('.target-element').businessHours({
      data: operationTime
    });
    
  • 检查插件版本兼容性
    这个问题有可能是特定版本的插件bug导致的,建议你切换到插件的最新稳定版本,或者查看插件的问题记录,看看是否有其他用户反馈过相同问题,以及是否有官方的修复方案。


内容的提问来源于stack exchange,提问作者DuliNini

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:19:05