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

如何移除当前日期高亮并禁止选择当前及未来日期?

搞定jQuery UI Datepicker的两个问题:禁用当前+未来日期、去掉今日高亮

1. 禁用当前及未来日期

你现在用的maxDate: 0是允许选择今天的,要把今天和以后的日期都禁掉,把maxDate改成-1(代表昨天)就行,修改后的代码:

$(".datepick").datepicker("destroy");
$(".datepick").datepicker({
    dateFormat: 'dd/mm/yy',
    showOtherMonths: true,
    selectOtherMonths: true,
    maxDate: -1, // 核心改动:禁用今天及之后的日期
});

2. 移除今天日期的高亮

你直接执行removeClass的代码没效果,是因为datepicker是动态渲染的,你跑代码的时候目标元素可能还没生成,而且切换月份时还会重新渲染。给你两个靠谱的解决办法:

方法一:用CSS直接覆盖(最省心)

写几行CSS把今天的高亮样式抹掉,不用折腾JS,还能适配月份切换:

.ui-datepicker-today a.ui-state-highlight {
    background: transparent;
    border-color: #ccc;
    color: #333;
    /* 和普通日期样式对齐即可 */
}

方法二:用datepicker的beforeShowDay事件处理

这个事件会在每个日期渲染前触发,刚好可以同时处理今天的禁用状态和高亮问题,一举两得:

$(".datepick").datepicker("destroy");
$(".datepick").datepicker({
    dateFormat: 'dd/mm/yy',
    showOtherMonths: true,
    selectOtherMonths: true,
    maxDate: -1,
    beforeShowDay: function(date) {
        const today = new Date();
        today.setHours(0, 0, 0, 0);
        // 判断当前日期是否为今天
        if (date.getTime() === today.getTime()) {
            // 返回数组:[是否可点击, 自定义类名, 提示文本]
            return [false, '', '今天不能选'];
        }
        return [true, '', ''];
    }
});

这里因为已经禁用了今天,直接返回[false, '', ''],既不能点击,也不会生成高亮样式。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 04:00:03