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 分钟前
从API调用到手写LRU:力扣146「LRU缓存」的哈希表+双向链表终极进化之路
前端·javascript·面试
科技道人20 分钟前
记录 默认置灰/禁用 app ‘Search Engine Selector‘ 的disable按钮
开发语言·前端·javascript
碎碎念_4925 小时前
SpringBoot + Vue 前后端分离从 0 到 1 完整环境配置流程
vue.js·spring boot·后端
shuaijie05186 小时前
强制修改调用接口的api地址。
javascript·vue.js·ecmascript
JerrySir6 小时前
恶意 npm 包只活了 17 分钟:技术面试里,为什么“升级依赖”还不算止血?
javascript·安全
白帽小阳6 小时前
2026前端面试题!(附答案及解析)
javascript·网络·python·安全·web安全·网络安全·护网行动
这是个栗子6 小时前
前端开发中的常用工具函数(八)
开发语言·前端·javascript
Hilaku6 小时前
Vue 和 React 真正的差距,不在语法,而在团队犯错成本
前端·javascript·程序员
研☆香7 小时前
为什么变量声明在赋值前也能使用?—— 深入理解 JavaScript 变量提升与作用域
开发语言·前端·javascript
柯克七七7 小时前
我把 bug 修得太干净了,测试组以为这个模块本来就没问题
前端·javascript·typescript