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

如何为日期选择器自动设置每两周选中周一?

自动实现每两周选中周一的日期选择器优化方案

当然有更简便的方法,完全不用手动逐个编写日期。原代码里维护enabledDays数组的方式不仅繁琐,后续日期更新还要手动修改,我们可以通过日期计算逻辑动态判断日期是否符合条件。

优化后的代码

<script type="text/javascript">
gform.addFilter( 'gform_datepicker_options_pre_init', function( optionsObj, formId, fieldId ) {
    if ( formId == 3 && fieldId == 45 ) {
        optionsObj.minDate = 0;
        // 设定第一个需要选中的基准周一(对应你原代码里的起始日期)
        const baseMonday = new Date('2023-05-22');
        optionsObj.beforeShowDay = function(date) {
            // 先判断当前日期是否是周一(getDay()返回1代表周一)
            const isMonday = date.getDay() === 1;
            if (!isMonday) {
                return [false];
            }
            // 计算当前日期与基准日期的天数差
            const timeDiff = date.getTime() - baseMonday.getTime();
            const dayDiff = Math.floor(timeDiff / (1000 * 60 * 60 * 24));
            // 验证天数差是否为14的整数倍,且日期不早于基准日期
            const isTwoWeekInterval = dayDiff >= 0 && dayDiff % 14 === 0;
            return [isTwoWeekInterval];
        };
    }
    return optionsObj;
} );
</script>

关键逻辑说明

  • 基准日期设定:baseMonday是你需要开始选中的第一个周一,后续所有符合条件的日期都是这个日期每两周的周一
  • 周一判断:通过date.getDay() === 1快速过滤非周一的日期
  • 间隔验证:计算当前日期和基准日期的天数差,只要差是14的整数倍(两周)且不早于基准日期,就标记为可选日期

这种方式的优势在于:后续如果需要调整起始日期或者间隔周期(比如改成三周),只需要修改baseMonday或者把14换成21即可,无需手动维护冗长的日期数组,扩展性和维护性都强很多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 03:07:44