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');
  };
相关推荐
kyriewen1 小时前
AI 生成的代码能跑就行?这 5 个坑迟早炸
前端·javascript·ai编程
kisshyshy2 小时前
🍦 雪糕、食堂、火车厢:三幅漫画吃透栈、队列与链表
javascript·算法
胡志辉2 小时前
从v8源码和react深入浅出理解 JavaScript 作用域链与闭包
前端·javascript
Bolt3 小时前
TypeScript 7.0 来了:当 tsc 用 Go 重写之后
javascript·typescript·go
阳火锅4 小时前
😭测试小姐姐终于不骂我了!这个提BUG神器太香了...
前端·javascript·面试
行者全栈架构师6 小时前
UniApp集成vk-uview-ui组件库详解:打造高效UI开发体验
前端·vue.js
林希_Rachel_傻希希6 小时前
js里面的proxy理解。以及vue3响应式数据设计底层
前端·javascript·面试
阿黎梨梨6 小时前
AI Loop:告别“人肉写提示词”,让代码替你“鞭策”AI
javascript·人工智能
Csvn7 小时前
Vue 3 defineModel 翻车实录:多个 v-model 绑定到底怎么写?
前端·vue.js
竹林81810 小时前
用 wagmi v2 + viem 监听链上事件,我踩了三天坑终于搞懂了实时日志与历史补全
javascript