You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过公式为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/2023
    • disableUntil禁用至24/06,disableSince从01/07开始禁用,最终启用25/06至30/06的日期,符合需求。
  • 当statusDate为30/06/2023时:
    • minDate为05/07/2023,maxDate为01/08/2023
    • disableUntil禁用至05/07,disableSince从01/08开始禁用,最终启用06/07至31/07的日期,符合需求。

内容的提问来源于stack exchange,提问作者None

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 12:07:48