来自 bootstrap datetimepicker 的选项 disabledDates 不工作

Option disabledDates from bootstrap datetimepicker not working

我正在使用 bootstrap datetimepicker 作为我的日历。我的代码如下所示:

var sundaysDisabled = [
  moment("17/12/2017"),
  moment("7/1/2018"),
  moment("14/1/2018"),
  moment("21/1/2018"),
  moment("28/1/2018"),
  moment("4/2/2018")
];

$("#form_dateTakeout").datetimepicker({
  inline: true,
  format: 'L',
  daysOfWeekDisabled: daysDisabled,
  disabledDates: sundaysDisabled,
  date: selectDate,
  minDate: tomorrow
});

我在 documentation 中找到了选项 disabledDates

问题是这些天我仍然可以 select,我只收到这个警告:

但我认为这不是问题,对吗?

问题出在 moment() 函数用法中。

关注:

moment("17/12/2017").isValid() --> returns

moment("12/17/2017").isValid() --> returns

或者您可以使用这种格式:

moment("17/12/2017", "DD/MM/YYYY").isValid() --> returns

在这里查看:https://momentjs.com/

在此工作的 CodePen 上验证:https://codepen.io/beaver71/pen/PEqYMv

您收到 弃用警告 因为您的日期字符串不是可识别的格式(ISO 8601 或 RFC 2822),您必须使用 moment(String, String)。在你的情况下,你可以有类似 moment("17/12/2017", 'D/M/YYYY').

要为日期时间选择器设置默认日期,请使用 defaultDate 选项而不是 date(前者已记录,后者未记录,即使看起来两者都有效)。

请确保您的 defaultDateminDatedisabledDatesdaysOfWeekDisabled 是连贯的,另请参阅 useCurrent 文档。

defaultDate 设置为启用日期以防止出现以下情况:

Uncaught Tried 7 times to find a valid date

这里有一个完整的例子:

var sundaysDisabled = [
  moment("17/12/2017", 'D/M/YYYY'),
  moment("7/1/2018", 'D/M/YYYY'),
  moment("14/1/2018", 'D/M/YYYY'),
  moment("21/1/2018", 'D/M/YYYY'),
  moment("28/1/2018", 'D/M/YYYY'),
  moment("4/2/2018", 'D/M/YYYY')
];

var tomorrow = moment().add(1, 'd').startOf('d');
var daysDisabled = [3]; //e.g. disable all wednesday
var selectDate = moment().add(1, 'week').day(2); // e.g. select next tuesday
$("#form_dateTakeout").datetimepicker({
  inline: true,
  format: 'L',
  daysOfWeekDisabled: daysDisabled,
  disabledDates: sundaysDisabled,
  defaultDate: selectDate,
  minDate: tomorrow
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.47/css/bootstrap-datetimepicker.css" rel="stylesheet"/>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.4/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.47/js/bootstrap-datetimepicker.min.js"></script>

<div class="form-group">
  <div class="row">
    <div class="col-md-8">
      <div id="form_dateTakeout"></div>
    </div>
  </div>
</div>