如何通过公式为Datepicker设置禁用日期?修复跨月失效问题
修复跨月场景下的日期范围启用逻辑
原代码的问题在于maxDate始终基于statusDate所在月的月末计算,当statusDate+5天跨月时,maxDate会早于minDate,导致disableSince的日期早于disableUntil,逻辑矛盾,最终所有日期都被禁用。
修复方案
将maxDate的计算改为基于minDate所在月的月末,这样无论minDate是否跨月,maxDate都会是minDate所在月的月末+1,确保启用的日期范围是minDate之后到该月月末。
修改后的完整代码
if (v.name == 'WISH_DATE') { const statusDate = moment(this.validAddress.duedate, "DD/MM/YYYY"); const minDate = moment(statusDate).add(5, 'days'); // 基于minDate计算所在月的月末+1 const maxDate = moment(minDate).endOf('month').add(1, 'day'); v.setup = { disableUntil: { year: minDate.year(), month: minDate.month() + 1, day: minDate.date() }, disableSince: { year: maxDate.year(), month: maxDate.month() + 1, day: maxDate.date() } }; }
测试验证
- 当
statusDate为19/06/2023时:minDate为24/06/2023,maxDate为01/07/2023disableUntil禁用至24/06,disableSince从01/07开始禁用,最终启用25/06至30/06的日期,符合需求。
- 当
statusDate为30/06/2023时:minDate为05/07/2023,maxDate为01/08/2023disableUntil禁用至05/07,disableSince从01/08开始禁用,最终启用06/07至31/07的日期,符合需求。
内容的提问来源于stack exchange,提问作者None
相关产品推荐
相关产品推荐

