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

jQuery Datepicker:如何禁用今日及次日共两天日期

实现jQuery Datepicker禁用今日及次日的方案

没问题!要实现禁用今日及次日的需求,我们可以借助jQuery UI Datepicker的beforeShowDay回调函数——你已经用它来禁用周末了,刚好可以在同一个逻辑里扩展规则。下面是完整的实现方案:

核心思路

  1. 计算出今日和次日的日期对象,转换成统一格式的字符串用于比较
  2. 在beforeShowDay中同时判断三个禁用条件:
    • 当前日期是周末(周六/周日)
    • 当前日期是今日
    • 当前日期是次日
  3. 可选:设置minDate为+2,让日历默认跳转到最早可选的第三天,提升用户体验

完整代码示例

<!-- 确保引入jQuery和jQuery UI的基础资源 -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://code.jquery.com/ui/1.13.2/jquery-ui.min.js"></script>
<link rel="stylesheet" href="https://code.jquery.com/ui/1.13.2/themes/base/jquery-ui.css">

<!-- 日期选择器输入框 -->
<input type="text" id="datepicker">

<script>
$(function() {
  // 初始化今日和次日的日期对象
  const today = new Date();
  const tomorrow = new Date(today);
  tomorrow.setDate(today.getDate() + 1);

  // 辅助函数:将日期对象格式化为YYYY-MM-DD字符串,避免时间部分干扰比较
  function formatDate(date) {
    const year = date.getFullYear();
    const month = String(date.getMonth() + 1).padStart(2, '0');
    const day = String(date.getDate()).padStart(2, '0');
    return `${year}-${month}-${day}`;
  }

  // 预格式化今日和次日的字符串
  const todayStr = formatDate(today);
  const tomorrowStr = formatDate(tomorrow);

  $("#datepicker").datepicker({
    beforeShowDay: function(date) {
      const currentDateStr = formatDate(date);
      // 判断是否为周末(周日=0,周六=6)
      const isWeekend = date.getDay() === 0 || date.getDay() === 6;
      // 判断是否为今日或次日
      const isDisabledDate = currentDateStr === todayStr || currentDateStr === tomorrowStr;
      
      // 返回数组:第一个元素控制是否可选,第二个元素控制样式
      return [!isWeekend && !isDisabledDate, isDisabledDate ? 'ui-state-disabled' : ''];
    },
    // 设置最小可选日期为今天往后推2天(即第三天)
    minDate: +2
  });
});
</script>

关键细节说明

  • 日期格式化:必须把日期转换成字符串比较,因为直接比较Date对象会包含时间部分(比如今日的0点和当前时间的Date对象不等),用YYYY-MM-DD格式能确保日期判断准确。
  • minDate设置:+2表示从今日开始往后偏移2天,这样打开日历的时候会自动定位到最早可选的日期,用户不用手动翻页。
  • 样式控制:返回的第二个元素ui-state-disabled是jQuery UI自带的禁用样式,会自动把日期置灰,不用额外写CSS。

如果你的原有代码已经有禁用周末的逻辑,只需要把isDisabledDate的判断加进去,合并到返回条件里就可以啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:47:56