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

如何配置jQuery Datepicker仅允许每隔一周的日期可选?

实现每隔一个周二的日期选择器

嘿,我注意到你想要把日期选择器限制为每隔一个周二(比如5月1日、15日、29日这类间隔两周的周二),但目前的代码只是简单排除了周一,完全没达到你的需求。别着急,我来帮你调整实现逻辑~

核心思路

要实现“每隔一个周二”的限制,我们需要:

  • 首先确定一个基准周二(比如你示例里的5月1日)作为起始点
  • 判断当前日期是否是周二
  • 计算当前日期与基准日期的天数差,确认这个差值是14的倍数(也就是间隔整两周)

修正后的代码实现

<input type="text" id="datepicker" />
<script type="text/javascript">
// 设置基准日期(这里用你示例里的5月1日,注意格式是年, 月-1, 日,因为JS月份从0开始)
const baseDate = new Date(2029, 4, 1); // 2029年5月1日是周二

$("#datepicker").datepicker({
  beforeShowDay: function(date) {
    // 1. 判断当前日期是否是周二(getDay()返回0=周日,2=周二)
    const isTuesday = date.getDay() === 2;
    if (!isTuesday) {
      return [false, '']; // 不是周二直接禁用
    }

    // 2. 计算当前日期与基准日期的天数差(转为毫秒后计算)
    const timeDiff = date.getTime() - baseDate.getTime();
    const dayDiff = Math.floor(timeDiff / (1000 * 60 * 60 * 24));

    // 3. 检查天数差是否是14的倍数,且日期在基准日期之后(避免选中更早的周二)
    const isEveryOtherTuesday = dayDiff >= 0 && dayDiff % 14 === 0;

    return [isEveryOtherTuesday, ''];
  }
});
</script>

代码说明

  • 基准日期设置:注意JavaScript的月份是从0开始的,所以5月对应4,你可以根据实际需求修改这个日期
  • 周二判断:date.getDay() === 2确保只有周二才有可能被选中
  • 间隔两周验证:通过计算天数差并取模14,确保当前日期和基准日期间隔整两周,同时dayDiff >= 0保证不会选中基准日期之前的周二

如果你需要支持动态调整基准日期(比如从当前日期开始算第一个周二作为基准),也可以用下面的逻辑自动生成基准日:

// 自动获取当前日期之后的第一个周二作为基准
function getFirstUpcomingTuesday() {
  const today = new Date();
  const daysUntilTuesday = (2 - today.getDay() + 7) % 7;
  const firstTuesday = new Date(today);
  firstTuesday.setDate(today.getDate() + daysUntilTuesday);
  return firstTuesday;
}

const baseDate = getFirstUpcomingTuesday();

这样就能灵活适配不同的起始需求啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:55:51