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

如何实现WordPress WooCommerce结账日期选择器字段周末自动修正为周一?

问题描述

我们公司做活动业务,基于WordPress WooCommerce使用Checkout Field Editor插件添加了两个日期选择器字段date_1和date_2。需求是date_2默认自动设置为date_1所选日期的3天后,但当前存在问题:如果计算后的date_2是周末(即用户选择的date_1是周末前3天),需要将date_2的默认值改为下周一(因为周末不提供服务)。

以下是当前网站functions.php文件中使用的代码:

<script type="text/javascript">
(function($){
    $('#date_1').on('change', function(){
        var date = $(this).datepicker('getDate');
        date.setDate(date.getDate()+3);
        var dd = date.getDate(),
           mm = date.getMonth()+1,
           yy = date.getFullYear(),
           dd = parseInt(dd)<10 ? '0'+dd : dd,
           mm = parseInt(mm)<10 ? '0'+mm : mm,
           selected_date = dd+'/'+mm+'/'+yy;
        $('#date_2').datepicker("option", "minDate", selected_date);
        $('#date_2').datepicker('setDate', selected_date);
        $('#date_2').datepicker("option", "maxDate", selected_date); 
       
    });
    
})(jQuery, window, document)
</script>
修改方案

核心思路是在计算出date_1+3天的日期后,判断该日期是否为周末,若为周末则调整到下周一。JavaScript的Date.getDay()方法会返回0(周日)到6(周六)的数值,利用这一点即可实现判断。

修改后的完整代码如下:

<script type="text/javascript">
(function($){
    $('#date_1').on('change', function(){
        var date = $(this).datepicker('getDate');
        date.setDate(date.getDate()+3);
        
        // 判断是否为周末,调整到下周一
        var dayOfWeek = date.getDay();
        if(dayOfWeek === 6){ // 周六,加2天到周一
            date.setDate(date.getDate()+2);
        } else if(dayOfWeek === 0){ // 周日,加1天到周一
            date.setDate(date.getDate()+1);
        }
        
        var dd = date.getDate(),
           mm = date.getMonth()+1,
           yy = date.getFullYear(),
           dd = parseInt(dd)<10 ? '0'+dd : dd,
           mm = parseInt(mm)<10 ? '0'+mm : mm,
           selected_date = dd+'/'+mm+'/'+yy;
        $('#date_2').datepicker("option", "minDate", selected_date);
        $('#date_2').datepicker('setDate', selected_date);
        $('#date_2').datepicker("option", "maxDate", selected_date); 
       
    });
    
})(jQuery, window, document)
</script>

关键修改说明

  • 在计算出date_1+3天的日期后,新增了对日期周数的判断:
    • 如果是周六(getDay() === 6),将日期再加2天,直接跳转到下周一
    • 如果是周日(getDay() === 0),将日期再加1天,跳转到下周一
  • 其余逻辑保持不变,确保date_2的最小、最大日期和选中值都同步调整后的日期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 07:23:04