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

jQuery UI Datepicker 1.13.2:如何重置下拉触发的禁用日期

解决jQuery UI Datepicker更新禁用日期的问题

你的问题核心是已初始化的Datepicker无法通过重复调用初始化方法更新beforeShowDay配置,因为jQuery UI Datepicker在已初始化的元素上再次调用datepicker()不会覆盖原有配置。下面提供两种可行的解决方案:

方案一:销毁后重新初始化

先销毁已存在的Datepicker实例,再传入更新后的禁用日期重新初始化,确保配置完全生效:

selectChange: function () {
    // 销毁已有的日期选择器实例
    $('.date').datepicker("destroy");
    
    // 替换为你实际获取到的新禁用日期数组
    var disabledDates = ["2023-09-01"];
    
    // 重新初始化日期选择器
    $('.date').datepicker({
        dateFormat: 'yy-mm-dd',
        minDate: minDate,
        firstDay: firstDay,
        maxDate: max_date,
        defaultDate: default_date,
        showWeek: show_week,
        beforeShowDay: function (date) {
            var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
            // 返回[true]表示日期可用,[false]表示禁用
            return [disabledDates.indexOf(string) === -1];
        }
    });
}

方案二:直接更新配置项(推荐)

无需销毁实例,通过datepicker("option")方法直接更新beforeShowDay回调,再刷新组件,性能更优:

// 全局或外层作用域定义禁用日期变量,方便后续更新
let disabledDates = [];

// 初始化日期选择器(仅执行一次,放在selectChange事件外部)
$('.date').datepicker({
    dateFormat: 'yy-mm-dd',
    minDate: minDate,
    firstDay: firstDay,
    maxDate: max_date,
    defaultDate: default_date,
    showWeek: show_week,
    beforeShowDay: function (date) {
        var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
        return [disabledDates.indexOf(string) === -1];
    }
});

// 下拉框选择事件处理
selectChange: function () {
    // 更新禁用日期数组为新获取的数据
    disabledDates = ["2023-09-01"];
    
    // 更新beforeShowDay配置
    $('.date').datepicker("option", "beforeShowDay", function(date) {
        var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
        return [disabledDates.indexOf(string) === -1];
    });
    
    // 刷新日期选择器,使新配置生效
    $('.date').datepicker("refresh");
}

原代码失效原因

当Datepicker已在元素上初始化后,再次调用$('.date').datepicker({...})只会读取已有配置,不会覆盖beforeShowDay这类回调函数,因此新的禁用日期规则无法生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 00:05:57