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

<v-date-picker>中如何禁用今日及所有未来日期?

解决v-date-picker禁用今日及后续日期的问题

你当前的问题出在两个点:

  • :max设为今日日期时,v-date-picker允许选择该日期,所以今日还是能选;
  • :disabledDates="date.getDate()"是错误用法,这个属性需要传入一个判断日期的函数,而非直接调用getDate()。

下面给两种可行的解决方法:

方法1:通过:max设置为昨日日期

把max值设为前一天的日期字符串,这样今日及之后的日期都会被禁用:

<template>
  <v-date-picker
    class="date-picker-header"
    v-model="dateTo"
    @input="menuTo = false"
    :max="yesterdayDate"
  ></v-date-picker>
</template>

<script>
export default {
  data() {
    return {
      dateTo: null,
      menuTo: false
    };
  },
  computed: {
    yesterdayDate() {
      const yesterday = new Date();
      yesterday.setDate(yesterday.getDate() - 1);
      // 截取YYYY-MM-DD格式的字符串
      return yesterday.toISOString().slice(0, 10);
    }
  }
};
</script>

方法2:使用disabledDates函数(更灵活)

通过自定义函数判断每个日期是否需要禁用,明确过滤今日及之后的日期:

<template>
  <v-date-picker
    class="date-picker-header"
    v-model="dateTo"
    @input="menuTo = false"
    :disabledDates="disableFutureAndToday"
  ></v-date-picker>
</template>

<script>
export default {
  data() {
    return {
      dateTo: null,
      menuTo: false
    };
  },
  methods: {
    disableFutureAndToday(date) {
      const today = new Date();
      // 重置今日的时分秒为0,避免时间部分干扰日期比较
      today.setHours(0, 0, 0, 0);
      // 返回true表示禁用该日期,今日及之后的日期都会被禁用
      return date >= today;
    }
  }
};
</script>

两种方法都能实现需求,方法2适合需要更复杂禁用规则的场景,方法1则更简洁直接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 01:10:28