【问题标题】:How to disable the dates after the current week on datepicker如何在日期选择器上禁用当前一周之后的日期
【发布时间】:2019-05-22 18:09:50
【问题描述】:

我正在创建一个日期选择器,它只允许您在当前日期后 48 小时内选择当前一周内的日期。

我已经创建了日期选择器,它将在当前日期的 48 小时后开始选择日期。

var hours = 1728e5;
  var minDate = new Date(Date.now() + hours); 
  minDate.setDate(minDate.getDate());
  var datepick = $(".datepicker");
  datepick.datepicker('setDate', "");
  datepick.datepicker('option', 'minDate', minDate);

我希望有一个日期选择器,它只会在当前日期 48 小时后选择当前一周的日期。因此,应禁用 48 小时后当前日期之前的日期和本周之后的日期。

【问题讨论】:

标签: jquery


【解决方案1】:

解决方案 1:使用 Moment.js

moment.js 的实现将以最少的代码行呈现最准确的结果。从那里,只需将剩余天数作为 maxDate 插入:

Date: <input type="text" id="datepicker">
// get number of days remaining in the week with moment.js
// the number 6 represents Saturday, our last day of the week
var daysTillWeekOver = 6 - moment().day();

// set max date variable
var dateMax = `+${daysTillWeekOver}d`;

// set min date variable
var hours = 1728e5;
var dateMin = new Date(Date.now() + hours); 
dateMin.setDate(dateMin.getDate());

// activate datepicker
$("#datepicker").datepicker({
  minDate: dateMin,
  maxDate: dateMax
});

这是一支工作笔:https://codepen.io/grantnoe/pen/byaxEM

Moment.js:https://momentjs.com

jQuery UI Datepicker maxDate: https://api.jqueryui.com/datepicker/#option-maxDate

解决方案 2:没有 Moment.js

如果你反对使用 moment.js,有这个(较少“保证”)方法:

var date = new Date();
var weekday = date.getDay();
var remainder = 6 - weekday;
document.getElementById("remainder").innerHTML = remainder;
&lt;p&gt;There are &lt;span id="remainder"&gt;&lt;/span&gt; days remaining in the week, not including today.&lt;/p&gt;

如果您使用此方法,您的 javascript 将如下所示:

// get number of days remaining in the week
var date = new Date();
var weekday = date.getDay();
var daysTillWeekOver = 6 - weekday;

// set max date variable
var dateMax = `+${daysTillWeekOver}d`;

// set min date variable
var hours = 1728e5;
var dateMin = new Date(Date.now() + hours); 
dateMin.setDate(dateMin.getDate());

// activate datepicker
$("#datepicker").datepicker({
  minDate: dateMin,
  maxDate: dateMax
});

【讨论】:

  • 谢谢,这就是我要找的答案。
  • 如果你不介意我问,如果我希望可以选择从下周开始的开始日期而不考虑当前星期几?
  • @JuliusTicong 我不确定你的意思。以 5 月 23 日为例:您在日期选择器中有哪些日子可用?
  • 可用日期应从 5 月 27 日(下周第一天)开始。无论本周的哪一天,可用日期都应始终从下周开始。
  • 如果您希望一周从星期一开始,请将daysTillWeekOver 上的 6 更改为 7,如下所示:var daysTillWeekOver = 7 - weekday;。然后在日期选择器选项中将minDate 设置为dateMax,以将开始日期提前到下周开始。我会删除或更改 maxDate 选项的值,因为它计算的最大值将比你的最小值早一天,这会破坏事情。
猜你喜欢
  • 2013-12-25
  • 1970-01-01
  • 2019-04-27
  • 1970-01-01
  • 2017-08-11
  • 2023-03-08
  • 1970-01-01
  • 2014-11-25
  • 1970-01-01
相关资源
最近更新 更多