当前位置: 首页 > web >正文

<el-date-picker>配置禁用指定日期之前的时间选择(Vue2+Vue3)

        今天突然接受到一个离谱的需求:有一个需要配置定时任务开始执行时间的组件,之前的做法都是用<el-form>的rules定义校验规则,也能实现效果,但是今天产品突发奇想:不能选的时间就置灰(就是我们说的禁用),直接一脸懵!不够最后还是好心的度娘拯救了我,但是网上大多是Vue2+ELement ui的解决方案,不过我们这个项目是Vue3+Element Puls,不过大差不差。下面我将vue2和vue3的实现方法总结如下:

一、实现原理

        Element  Ui和Element Plus官方提供的配置属性是不一样的,下面介绍一下两者提供的配置属性

1、Element Ui

    Element Ui提供了Picker Options属性,里面有如下参数,其中disabledDate可以实现禁用指定日期的需求

2、Element Plus

        在Element Plus则是通过disabled-date来实现判断日期是否禁用的方法

二、Vue2+Element ui 实现

<el-date-pickerv-model="date"type="date"size="small"value-format="yyyy-MM-dd"format="yyyy-MM-dd":placeholder="'选择日期'":picker-options="pickerOptions"
></el-date-picker>
data(){return {pickerOptions: {disabledDate(time) {return time.getTime() < Date.now() - 8.64e7;}}}
}

        提示:好像有网友说,vue2中这个指定日期的函数必须写到data中,不过我也没试,大家用的时候如果有问题,可以注意一下

三、Vue3+Element Plus 实现

<el-date-pickerv-model="createParams.startTime"class="!w-240px"type="datetime"placeholder="请选择任务开始时间"value-format="x":show-now="false":disabled-date="disabledDate"
/>
const disabledDate = (time: Date) => {return time.getTime() < Date.now() - 8.64e7// - 8.64e7是今天可以选
}

四、拓展

1、几个常用日期的禁用写法

禁用今日之后的日期(今天可选)

const disabledDate = (time: Date) => {return time.getTime() > this.specifyDate - 8.64e7;  //禁用今天之后的日期(今天可选)
}

禁用指定日期,如禁用大于2025-10-01日期(当前可选)

const disabledDate = (time: Date) => {return time.getTime() > new Date("2025-10-01").getTime() - 8.64e7;
}

2、解释一下上面设置时间的方法

(1)Date.now()获取当前时间(表示自 UNIX 纪元开始(1970 年 1 月 1 日 00:00:00 (UTC))到当前时间的毫秒数)

(2)- 8.64e7 表示可选择当天时间(注:小于当前时间,- 8.64e7 则是禁用日期不包含当前日,若大于当前日期, 8.64e7 则是禁用日期包含当前日)

time.getTime() < Date.now() - 8.64e7  禁用日期不包含当前日

time.getTime() > Date.now() - 8.64e7  禁用日期包含当前日

 (3)time.getTime() < Date.now() - 8.64e7 代表只能选择今天之后的时间【包含今天】(8.64e7:科学计数法,代表8.64×10的7次方)

3、h5禁用指定日期不可选

<inputtype="date"placeholder="请选择日期"id="finishTime"name="finishTime"
>

设置禁止选择小于今天的日期,通过min设置【max禁止选择大于今天的日期】

const date_now = new Date();
const year = date_now.getFullYear();
const month = date_now.getMonth()+1 < 10 ? "0" + (date_now.getMonth() + 1) : (date_now.getMonth() + 1);
const date = date_now.getDate() < 10 ? "0" + date_now.getDate() : date_now.getDate();
$("#finishTime").attr("min", year + "-" + month + "-" + date);

http://www.xdnf.cn/news/9868.html

相关文章:

  • 尚硅谷redis7 86 redis集群分片之3主3从集群搭建
  • 自动化测试实例:Web登录功能性测试(无验证码)
  • 《深度关系-从建立关系到彼此信任》
  • 自动脚本精灵 解锁会员版 v25.05.25 智能安卓自动点击脚本助手APP
  • 深入理解 SQL 的 JOIN 查询:从基础到高级的第一步
  • 【达梦数据库】会话sp_close关闭不掉
  • LLM:decoder-only 思考
  • 【从零开始学习QT】快捷键、帮助文档、Qt窗口坐标体系
  • 我用Qt+Python实现了个监控QQ消息自动下载文件处理的办公外挂程序
  • HTML 计算网页的PPI
  • nlp中的频率就是权重吗
  • C++ 初阶 | 类和对象易错知识点(下)
  • Codeforces Round 1027 (Div. 3)(A-E)
  • React 编译器
  • 一文理清楚大模型里的RAG架构
  • 基于生产-消费模式,使用Channel进行文件传输(Tcp方式)
  • [嵌入式实验]实验四:串口打印电压及温度
  • 嵌赛笔记主控
  • 鸿蒙NEXT应用加固工具哪家更好?国内主流的6款对比
  • 【Redis技术进阶之路】「原理分析系列开篇」探索事件驱动枚型与数据特久化原理实现(文件事件驱动执行控制)
  • 驱动开发学习20250529
  • 贝锐蒲公英工业路由器R300A海外版:支持多国4G频段,全球组网
  • 在Spring Cloud中将Redis共用到Common模块
  • ES中must与filter的区别
  • π0-通用VLA模型-2024.11.13-开源
  • 本地部署大模型llm+RAG向量检索问答系统 deepseek chatgpt
  • linux创建虚拟网卡和配置多ip
  • 【NATURE氮化镓】GaN超晶格多沟道场效应晶体管的“闩锁效应”
  • 关于无法下载Qt离线安装包的说明
  • 《胜算》