我试图在计算最大日期时排除已禁用的日期,但是尝试了很多方法仍然不起作用。是否有任何建议?
02-12-2019和周日已被禁用,但是Maxdate包括禁用日期。Maxdate应该是3天,其中排除了禁用日期,并且Maxdays从今天开始计算。我的目标是,如果从今天到最大日期之间的日期已禁用,则添加日期。每个禁用日期增加1天。
更新:
现在我可以在计算最大日期时排除周日,但我仍然无法排除数组日期,在这种情况下,它应在02-12-2019后再添加一天。
更新的代码:()
02-12-2019和周日已被禁用,但是Maxdate包括禁用日期。Maxdate应该是3天,其中排除了禁用日期,并且Maxdays从今天开始计算。我的目标是,如果从今天到最大日期之间的日期已禁用,则添加日期。每个禁用日期增加1天。
更新:
现在我可以在计算最大日期时排除周日,但我仍然无法排除数组日期,在这种情况下,它应在02-12-2019后再添加一天。
更新的代码:()
<script>
var array = ["02-12-2019"]
//new
function includeDate(date) {
return date.getDay() !== 7 && date.getDay() !== 0;
}
function getTomorrow(date) {
return new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1);
}
//prev
$('input').datepicker(
{
defaultDate: "+1d",
inline: true,
showOtherMonths: true,
changeMonth: true,
selectOtherMonths: true,
required: true,
showOn: "focus",
numberOfMonths: 1,
minDate: 1,
beforeShowDay: function(date) {
var string = jQuery.datepicker.formatDate('dd-mm-yy', date);
var isDisabled = ($.inArray(string, array) != -1);
return [includeDate(date) && !isDisabled];
},
maxDate: (function(max) {
var today = new Date();
var nextAvailable = getTomorrow(today);
var count = 0;
var countz = 1;
var newMax = 0;
while(count < max) {
if (includeDate(nextAvailable) ) {
count++;
}
if (includeDate(nextAvailable) ) {
countz++;
}
newMax++;
nextAvailable = getTomorrow(nextAvailable);
}
return newMax;
})
(3)
});
Maxdate should be 3 days
- 你的意思是maxDate
应该从今天开始算起三天吗?并且即使它被禁用,maxDate
也应该是可点击的吗? - Don't Panic$('#datepicker1')
的更改处理程序中初始化了$('#datepicker2')
,因此它将被多次初始化。你应该只初始化一次,然后使用 option 方法更改选项。 - Don't Panic$holidays
看起来是什么样子的?config('app.date_format_js')
是什么?#datepicker2
是否与您的问题有关(禁用了maxDate
)?请参阅如何创建一个最小化、完整和可验证的示例 - 您可以编辑掉大量代码,添加真实的config()
值,以便我们能够查看工作的代码并尝试调试它。 - Don't Panicconfig/app.php
文件里有什么。我们无法运行你的代码,因为我们没有你的config/app.php
文件。对于这个问题,你使用 Laravel 并不重要 - 我们只需要知道那个值是什么 - 你可以将其删除并替换为"Y-m-d"
(或者它实际的值)。$holidays
同样如此 - 只需给我们一个小的硬编码数组来演示问题。请阅读 如何创建一个最小、完整和可验证的示例。 - Don't PanicbeforeShow()
听起来像是做这个工作的正确位置,但据我所知,它实际上是在所有beforeShowDay()
调用之前运行的 :-( - Don't Panic