javascript flatpickr minDate不考虑已阻止的周末

iqjalb3h  于 2023-09-29  发布在  Java
关注(0)|答案(1)|浏览(79)

我已经打开了一个github issue,但由于似乎没有活动,我会在这里问,希望有人能帮助我。

当前情况

我正在使用flatpickr进行日期选择,我需要阻止周末并设置提前期。
像这样的周末:

'disable': [
    function(date) {
        // blocking Sunday (0) and Saturday (6)
        return (date.getDay() === 0 || date.getDay() === 6);
    }
],

并设置4天的提前期(今天和接下来的3天被封锁):

// blocking today + 3 following days
minDate: new Date().fp_incr(4)

日期选择器不按预期工作。

期望:周末被封锁。

当在星期三选择日期时,从今天起,第一个选项应该是星期二以及随后的3天(星期三至星期一,不包括(周末)被封锁。

实际行为:minDate不阻止周末。

星期三选择日期时,第一个选项是星期日,因为周末包括在计数中。但是,周末拦截器介入并实际上阻止了周末被挑选(正如预期的那样),所以第一个可能的日子是接下来的星期一
如果minDate选项在disable选项之前或之后,它不会改变任何内容。
周末封锁:

没有周末封锁:

版本号

flatpickr 4.6.13
任何建议都很感激。我使用的是纯JavaScript和Blazor。有谁知道如何覆盖minDate或在minDate选项中插入一个函数来识别阻塞的日期吗?最好让minDate选项识别并尊重disable选项。

6tdlim6h

6tdlim6h1#

这就是我的工作:
1.我在一个变量中设置了默认的提前期值为4
1.我将日期+提前期转换为字符串,得到Sun Oct 01 2023 00:00:00 GMT+0200
1.然后检查String是否包含“Sat”或“Sun”
1.然后我用正确的minDate选项初始化flatpickr。(周末计数+2)

var leadtime = 4;
var leattimeString = new Date().fp_incr(leadtime).toString();

if (leattimeString.includes('Sat') || leattimeString.includes('Sun')) {
    flatpickr('.js-flatpickr', {
        ...
        // when leadtime lands on a Saturday or Sunday add 2 extra days to count the weekend
        minDate: new Date().fp_incr(6),
    })
}

听起来很脏,看起来很脏,但做我想做的。
首先初始化flatpickr,然后插入正确的提前期,这似乎不起作用。使用minDate: function {..}也不行
感谢@CBroe把我推向正确的方向。

相关问题