【发布时间】:2020-03-23 15:47:52
【问题描述】:
我试图在计算 MaxDate 时排除禁用日期。 我尝试了很多方法,但仍然不起作用。 有什么建议吗?
02-12-2019 和 星期日 已禁用,但 Maxdate 包含禁用日期。 Maxdate 应为 3 天,其中不包括禁用天数,Maxdays 从今天开始。 我的目标是如果从今天到最大天数之间的天数已禁用,则添加天数。 每禁用一天增加 1 天
更新
现在我可以在计算 maxdate 时排除星期日,但我仍然无法排除应该在 2019 年 2 月 12 日之后再增加一天的数组日期。
更新代码 :(
<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应该是从今天起 3 天?maxDate应该是可点击的,即使它被禁用了? -
一条评论 - 您在
$('#datepicker1')更改处理程序中初始化$('#datepicker2'),因此它将被初始化多次。你应该只初始化一次,然后change options with the option method。 -
另外,
$holidays是什么样的?config('app.date_format_js')是什么?#datepicker2是否与您的问题有关(已禁用maxDate)?请查看how to create a minimal, complete, and verifiable example - 你可以编辑掉很多这段代码,添加真正的config()值,这样我们就可以看到工作代码并尝试调试它。 -
我知道这意味着什么,但我不知道您的
config/app.php文件中有什么。我们无法运行您的代码,因为我们没有您的config/app.php。对于这个问题,与您使用 Laravel 无关 - 我们只需要知道该值是什么 - 您可以将其删除并替换为"Y-m-d"(或任何实际值)。$holidays也一样——只要给我们一个小的硬编码数组来演示这个问题。请阅读how to create a minimal, complete, and verifiable example。 -
我昨天在 JSFiddle 中玩这个,但无法让它工作。
beforeShow()听起来像是做这项工作的正确地方,但 AFAICT 它实际上在所有beforeShowDay()调用之前运行之前 :-(
标签: javascript jquery laravel datepicker