首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >禁用所有周末和特定日期,并启用母亲节

禁用所有周末和特定日期,并启用母亲节
EN

Stack Overflow用户
提问于 2019-05-04 15:53:07
回答 1查看 56关注 0票数 0

我有以下代码已经在functions.php中运行良好-我想启用母亲节(2019年5月12日),这是一个星期天。如何将其添加到返回字符串中?

代码语言:javascript
复制
    function custom_adjust_datepicker_range () {
        if ( is_checkout() ) {

    ?>

    <script type="text/javascript">
    var disabledDays = [
     "1-1-2019","1-1-2020","2-1-2019","28-1-2019","27-1-2020","4-3-2019","2-3-2020","19-4-2019","10-4-2020","22-4-2019","13-4-2020","25-4-2019","25-4-2020","27-4-2020","3-6-2019","1-6-2019","30-9-2019","28-9-2020","25-12-2018","25-12-2019","25-12-2020","26-12-2018","26-12-2019","26-12-2020","27-12-2018"
    ];
    jQuery( "#delivery_date" ).datepicker({
        minDate: 2,
  beforeShowDay: function(date) {
    var day = date.getDay();
    var string = jQuery.datepicker.formatDate('d-m-yy', date);
    var isDisabled = (jQuery.inArray(string, disabledDays) != -1);
    return [(day != 1 && day != 0 && !isDisabled), ''];
}
});
    </script>
    <?php
        }
    } // End custom_adjust_datepicker_range()
    add_action( 'wp_footer', 'custom_adjust_datepicker_range', 50 );
EN

回答 1

Stack Overflow用户

发布于 2019-05-08 09:08:11

考虑下面的例子。

代码语言:javascript
复制
jQuery(function() {
  var disabledDays = [
    "1-1-2019", "1-1-2020", "2-1-2019", "28-1-2019", "27-1-2020", "4-3-2019", "2-3-2020", "19-4-2019", "10-4-2020", "22-4-2019", "13-4-2020", "25-4-2019", "25-4-2020", "27-4-2020", "3-6-2019", "1-6-2019", "30-9-2019", "28-9-2020", "25-12-2018", "25-12-2019", "25-12-2020", "26-12-2018", "26-12-2019", "26-12-2020", "27-12-2018"
  ];

  var dtf = 'd-m-yy';

  function getMothersDay(y) {
    var mayFirst = new Date(y, 4, 1);
    var dayOfWeek = mayFirst.getUTCDay();
    var firstSunday;
    if (dayOfWeek == 0) {
      firstSunday = mayFirst;
    } else {
      firstSunday = new Date(y, 4, 1 + (7 - dayOfWeek));
    }
    var mothersDay = new Date(y, 4, firstSunday.getDate() + 7);
    return mothersDay;
  }

  function isMothersDay(dt) {
    return (jQuery.datepicker.formatDate(dtf, dt) == jQuery.datepicker.formatDate(dtf, getMothersDay(dt.getFullYear())));
  }

  jQuery("#delivery_date").datepicker({
    minDate: 2,
    beforeShowDay: function(date) {
      var day = date.getDay();
      var string = jQuery.datepicker.formatDate(dtf, date);
      var isDisabled = jQuery.inArray(string, disabledDays);
      var result = [
        true,
        "",
        ""
      ];
      switch (true) {
        case isMothersDay(date):
          // Mother's Day
          result = [
            true,
            "mothers-day",
            "Mother's Day"
          ];
          break;
        case (isDisabled >= 0):
          // Disable Days
          result[0] = false;
          break;
        case (day == 0):
        case (day == 6):
          // Weekends
          result[0] = false;
          break;
      }
      return result;
    }
  });
});
代码语言:javascript
复制
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

<p>Delivery Date: <input type="text" id="delivery_date"></p>

更多信息请访问:How to calculate Mother’s Day in JavaScript

这个例子是基于我执行的第一个Google搜索结果。将来,您可能想要搜索基本的示例。

这不是针对WordPress进行调整的,因此您需要根据需要调整代码。

您有3个基本检查:

  • 是母亲节的日期
  • 是日期数组中的日期
  • 是周末的日期

您可能会遇到其他情况,因此总体上使用switch()可能会更容易一些。我从最不常见的情况转移到最常见的情况。你可以添加更多,并且只检查是否是母亲节,如果月份是五月,并且该月的日期在前两周内:(date.getMonth() == 4 && date.getDate() < 15)

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55980615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档