【问题标题】:jQuery Date Picker- Block a future date rangejQuery 日期选择器 - 阻止未来的日期范围
【发布时间】:2022-01-05 22:25:33
【问题描述】:

我在 Shopify 商店中有 jQuery 日期选择器,并且在尝试阻止从 24/12/2021 到 04/01/202 DD MM YY 即将到来的日期范围时遇到了一些问题,我们不会在这些日期上运行天。

非常感谢任何建议,这是我们目前正在使用的脚本。

   $(document).ready( function() {
$(function() {
$("#date").datepicker( {
firstDay: 1,
minDate: +0,
maxDate: '+2M',
dateFormat: 'DD d MM yy' ,
beforeShowDay: $.datepicker.noWeekends,
beforeShow : function(){
  
var dateTime = new Date();
var hour = dateTime.getHours();
   
if(hour>=10){
$(this).datepicker( "option", "minDate", "+1" );
}
} } );
});
  $('input[name="checkout"], input[name="goto_pp"], input[name="goto_gc"]').click(function() {
if ($('#date').val() == "" || $('#date').val() === undefined) 
  {
alert("You must pick a delivery date");
return false;
} else {
//$(this).submit();
return true;
}
});
});
  <link rel="stylesheet" href="https:////code.jquery.com/ui/1.13.0/themes/base/jquery-ui.css">
  <script src="https://code.jquery.com/jquery-3.6.0.js"></script>
  <script src="https://code.jquery.com/ui/1.13.0/jquery-ui.js"></script>
<input type="text" id="date">

【问题讨论】:

  • 这能回答你的问题吗? Jquery UI datepicker. Disable array of Dates
  • 欢迎来到 SO。请在发布新问题之前尝试搜索答案 - 即使是像“jquery datepicker block dates”这样的模糊搜索已经在 SO 上找到了这么多答案。
  • 你看到我的回答了吗?
  • @Don'tPanic 谢谢,我已经搜索并找到了一些答案,但我无法使其工作。

标签: javascript jquery datepicker


【解决方案1】:

您需要使用 beforeShowDay 并检查您需要在没有周末日的情况下显示哪个日期。

我在下面评论了我的代码。

$(document).ready( function() {
  $(function() {
      $("#date").datepicker({
          firstDay: 1,
          minDate: +0,
          maxDate: '+2M',
          dateFormat: 'DD d MM yy',
          beforeShowDay: function(date){
            var noWeekend = $.datepicker.noWeekends(date);
            // we check if its not a weekend day
            if (noWeekend[0]) {
              // show days from range
              let val = new Date("2021-12-24") >= date || new Date("2022-01-04") < date;
              return [val];
            } else {
              // else use function noWeekend
              return noWeekend;
            }
          },
          beforeShow : function(){
            var dateTime = new Date();
            var hour = dateTime.getHours();

            if (hour >= 10) {
              $(this).datepicker( "option", "minDate", "+1" );
            }
          }
      });
  });

  $('input[name="checkout"], input[name="goto_pp"], input[name="goto_gc"]').click(function() {
    if ($('#date').val() == "" || $('#date').val() === undefined) {
      alert("You must pick a delivery date");
      return false;
    } else {
      //$(this).submit();
      return true;
    }
  });
});
<link rel="stylesheet" href="https:////code.jquery.com/ui/1.13.0/themes/base/jquery-ui.css">
  <script src="https://code.jquery.com/jquery-3.6.0.js"></script>
  <script src="https://code.jquery.com/ui/1.13.0/jquery-ui.js"></script>
<input type="text" id="date">

【讨论】:

  • 周末怎么样?
  • 为什么要阻止周末?
  • 谢谢,这有助于使这些日期不可用。但是,由于 noweekends 从 BeforeShowDay 中删除,它又重新开放了周末
  • 为什么?因为 OP 已经阻止了他们,但你删除了那个过滤器
  • @SKJ 非常感谢,你帮了大忙
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-19
  • 1970-01-01
相关资源
最近更新 更多