vue3 el-date-picker 日期选择器校验规则-选择日期范围不能超过七天

el-date-picker日期选择器校验规则-选择日期范围不能超过七天

效果

ps注意:

三个位置

:rules="rules" ref="formRef"

prop="flightDate"

html 复制代码
<template>...省略
  <el-form :model="queryForm" :rules="rules" ref="formRef" label-width="85">
  <el-form-item label="时间范围:" prop="flightDate"> 
  <el-date-picker
  v-model="queryForm.date"
  type="daterange"
  start-placeholder="选择开始时间"
  end-placeholder="选择结束时间"
  @change="onDateChange"
  />

</el-form-item>
</el-form>
  ...省略
</template>
TypeScript 复制代码
<script setup lang="ts">
  //...省略
  const queryForm = ref({
    date: [dayjs().subtract(1, 'day').toDate(), dayjs().toDate()],
  });
  const formRef = ref();
  // 添加验证函数
  const validateDateRange = (_rule: any, value: [Date, Date], callback: (error?: string) => void) => {
    if (!value || value.length !== 2) {
      callback('请选择完整的日期范围');
      return;
    }

    const [start, end] = value;
    const diffDays = Math.ceil((end.getTime() - start.getTime()) / (1000 * 60 * 60 * 24));
    console.log(diffDays);

    if (diffDays > 7) {
      callback('时间范围不能超过7天');
    } else {
      callback();
    }
  };

  const rules = {
    flightDate: [
      {
        validator: validateDateRange,
        trigger: 'change',
      },
    ],
  };

  const onDateChange = () => {
    formRef.value?.validateField('flightDate');
  };
相关推荐
李明卫杭州17 分钟前
React 复合事件系统对比解析
前端·javascript·react.js
行者全栈架构师1 小时前
Spring Boot 接入 MaxKey 单点登录:6 个内部系统,一次登录全通行
java·vue.js·后端
万敏1 小时前
Vue3 全栈实战第九周:Node.js + Express 后端从零搭建实战记录
vue.js·node.js·全栈
LEE2 小时前
前端转型全栈 01:数据建模,前端最大的盲区
前端·javascript·后端
雪芽蓝域zzs2 小时前
第四十七节:驾驶舱大屏 ECharts 图表集成
前端·javascript·vue.js
梦醒沉醉3 小时前
7、表达日期和时间(前朝遗老Date)
javascript
白雾茫茫丶3 小时前
Vibecoding 一个主题切换动画库:13 种揭幕方式
前端·vue.js·react.js
雪芽蓝域zzs3 小时前
第四十九节:TagsView 右键菜单(带三角箭头)给每个 tag 增加**鼠标右键菜单**(右键标签弹出:关闭、关闭其他、关闭全部)
前端·javascript·vue.js
এ慕ོ冬℘゜4 小时前
从零开发移动端医院挂号页面:适配、交互与前端实现详解
前端·javascript
宁渡AI大模型4 小时前
AI 全栈面试新趋势:Vibe Coding、前端、Java 后端高频面试题深度解析|河南宁渡科技有限公司编程教程
java·javascript·人工智能·python·ai大模型