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

DatePicker中beforeShowDay返回数组时始终为true的问题排查

问题分析与解决方案

看起来你遇到的问题是因为你使用的是bootstrap-datepicker插件,但误用了jQuery UI Datepicker的beforeShowDay返回格式!

核心原因

bootstrap-datepicker和jQuery UI Datepicker的beforeShowDay回调规则完全不同:

  • jQuery UI的该回调支持返回[启用状态, 样式类名, 提示文本]这样的数组格式
  • 但bootstrap-datepicker并不识别这种数组——它会把任何非布尔、非对象的真值(比如你返回的非空数组)都判定为「日期可用」,所以即使数组第一个元素是false,日期依然可选,同时样式类也不会正确应用。

修复方案

针对bootstrap-datepicker,你需要改用对象格式来同时指定禁用状态和样式类:

修改你的jourDispo函数如下:

function jourDispo(date) {
    console.log("I'm in jourDispo");
    // 用对象明确指定禁用状态和样式类
    return { enabled: false, classes: 'red' };
}

完整修改后的JS代码

$("#date").datepicker({ 
    autoclose: true, 
    language: 'fr', 
    format: 'dd/mm/yyyy', 
    beforeShowDay: jourDispo 
});
function jourDispo(date) {
    console.log("I'm in jourDispo");
    return { enabled: false, classes: 'red' };
}

额外说明

bootstrap-datepicker的beforeShowDay支持的返回值类型包括:

  • 布尔值:true(启用日期)/false(禁用日期)
  • 字符串:仅指定样式类,日期默认启用
  • 对象:包含enabled(布尔)、classes(字符串)、tooltip(字符串)三个可选属性,能同时控制状态、样式和提示

你的配置选项(autoclose、language)是bootstrap-datepicker特有的,这也确认了你使用的是该插件,一定要遵循它的API规范哦。

内容的提问来源于stack exchange,提问作者Alexandre B.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:36:45