Element-UI饿了么时间组件控件按月份周日期,开始时间结束时间范围限制参数
在日常开发中,我们会遇到一些情况,在使用Element-UI 限制用户的日期时间范围的选择控制(例如:查询消息开始和结束时间,需要限制不能选择今天之后的时间)。
看了网上的一些文档,零零散散、各式各样的都是简单的吧代码列出来,并没有详细的说明各参数的含义,用途,对新手及其不友好。
我们这里使用的是 DatePicker 日期选择器: Element官网日期控件地址,新手对于日期使用限制时间,可能不太理解写限制规则的方式。接下来我们将详细的解读日期限制的参数设置。全方位的透彻理解怎么限制日期控件的时间。
官方文档日期限制说明:

先看饿了么这里的官方文档,这里写的很简洁,使用 disabledDate 参数来限制, disabledDate 是一个函数,函数内有一个形参,以下是简单伪代码示例
// HTML 首先在日期选择器加上:picker-options属性
// 例如: <el-date-picker
v-model="endDate"
:picker-options="disabledDate"
>
</el-date-picker> // Vue 中 data里面写入相关参数
disabledDate: (time) => { return time.getTime() < new Date().getTime() // 此处 time 的形参,time默代表选择器的每一个当前时间,用于判断这些时间是否可选.
// 通过 return time > 某个时间 或者 return time < 某个时间来限制时间的选择范围.
// 记得时间需要使用 .getTime() 转换成 毫秒.
})
以上是个简单的示例,相信仔细阅读后的同学,现在一定已经了解时间限制的方法,很简单其实就是通过设置 disabledDate 的形参 time, return 出一个大于或者小于的公式,即可来设置日期的使用范围。
接下来,我们使用两个详细的案列来更清晰解读一下,日期控件的使用方法、
两个日期联动控制(限制开始和结束时间为最近一个月)
其实思路很简单,开始时间显示当前时间为最大,结束时间通过拿到开始时间的数据,限制最大为 开始时间或者当前时间即可;下面详细代码解读;
Tip: 日期控件需要的参数是 “2020-12-31”这种格式,但是在限制时间的函数使用 “<”、“>”、">="、“<=”,这些比较方法是,需要使用.getTime()转化成毫秒,否则“2020-12-31”这种格式是无法对比的哦~
// HTML 代码 <el-date-picker
v-model="value1"
placeholder="开始时间"
:picker-options="start">
</el-date-picker>
<el-date-picker
v-model="value2"
placeholder="结束时间"
:picker-options="end">
</el-date-picker> // Vue 中 data 中代码
value1: '2020-12-31',
value2: '2020-12-31',
start: {
disabledDate: (time) => {
// 此处为30天时间的毫秒数
const space = 30 * 24 * 3600 * 1000
// 设置最小时间毫秒数,当前时间减去30天的毫秒数
const minTime = new Date().getTime() - space
// 设置最大时间毫秒数,当前时间加上今天天的毫秒数
const maxTime = new Date(new Date(new Date().toLocaleDateString()).getTime() + 24 * 60 * 60 * 1000 - 1)
// return 一个公式 最大为当前时间,最小为30天前
return time.getTime() < minTime || time.getTime() > maxTime
}
},
end: {
disabledDate: (time) => {
// 此处为30天时间的毫秒数
const space = 30 * 24 * 3600 * 1000
// 拿到开始时间的日期
const startTime = value1
// 设置当前选择时间
const startTimes = startTime || new Date().getTime() - space
// 设置最小选择时间,dateRange为当前时间需要手动方法获取当前时间,下方代码有展示获取当前时间的方式
const minTime = (startTimes === dateRange) ? new Date(startTimes).getTime() : new Date(startTimes).getTime() - (1 * 24 * 3600 * 1000)
// 设置最大选择时间为今天
const maxTime = new Date(new Date(new Date().toLocaleDateString()).getTime() + 24 * 60 * 60 * 1000 - 1)
// 这里依旧是return 一个公式 最大为今天或者开始框中选择的时间,最小为30天前
return time.getTime() < minTime || time.getTime() > maxTime
}
}, // 获取当前时间的函数写法 var dd = new Date()
dd.setDate(dd.getDate() + addDate) // 获取第addDate天后的日期
var y = dd.getFullYear()
var m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期,不足10补0
var d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate()
// 获取当前几号,不足10补0
let dateRange = y + '-' + m + '-' + d
授人以鱼不如授人以渔,希望大家可以更好地去理解,这个日期控件限制方法的使用,而不是一味地去复制相关的代码,短时间内复制可能更快,但是想要提高自己就要不断地去理解每一个参数的设计、用法、理念。
如果大家有任何疑问即可留言反馈,会在第一时间回复反馈,谢谢大家!
本文为Tz张无忌原创文章,读后有收获可以右侧边栏请作者喝咖啡,转载请文章注明出处:https://www.cnblogs.com/zhaohongcheng/
Element-UI饿了么时间组件控件按月份周日期,开始时间结束时间范围限制参数的更多相关文章
- WPF Timeline简易时间轴控件的实现
原文:WPF Timeline简易时间轴控件的实现 效果图: 由于整个控件是实现之后才写的教程,因此这里记录的代码是最终实现后的,前后会引用到其他的一些依赖属性或者代码,需要阅读整篇文章. 1.确定T ...
- Android各组件/控件间通信利器之EventBus
实际项目开发过程中,经常遇到如下场景:不同的应用程序组件的控件间具有一定的相互关联性,其中用户对后者进行的某种操作会引起前者的相应改变.举一个具体的场景:以糗事百科为例,在糗事列表页和详情页页,对于每 ...
- SNF开发平台WinForm之十五-时间轴控件使用-SNF快速开发平台3.3-Spring.Net.Framework
一.显示效果如下: 二.在控件库里选择UCTimeAxis 拖拽到窗体里. 三.加入以下代码,在load事件里进行调用就可以运行了. #region 给时间轴控件加载数据 private void U ...
- ASP.NET2.0组件控件开发视频 初体验
原文:ASP.NET2.0组件控件开发视频 初体验 ASP.NET2.0组件控件开发视频 初体验 录了视频,质量不是很好,大家体验下.我会重新录制的 如果不清楚,可以看看http://v.youku. ...
- 老猪带你玩转自定义控件三——sai大神带我实现ios 8 时间滚轮控件
ios 8 的时间滚轮控件实现了扁平化,带来很好用户体验,android没有现成控件,小弟不才,数学与算法知识不过关,顾十分苦恼,幸好在github上找到sai大神实现代码,甚为欣喜,顾把学习这个控件 ...
- 给easyui datebox时间框控件扩展一个清空的实例
给easyui datebox扩展一个清空的实例 步骤一:拓展插件 /** * 给时间框控件扩展一个清除的按钮 */ $.fn.datebox.defaults.cleanText = '清空'; ( ...
- WPF里面多线程访问UI线程、主线程的控件
如果出现以下错误:调用线程无法访问此对象,因为另一个线程拥有该对象. 你就碰到多线程访问UI线程.主线程的控件的问题了. 先占位.
- WPF 时间编辑控件的实现(TimeEditer)
一.前言 有个项目需要用到时间编辑控件,在大量搜索无果后只能自己自定义一个了.MFC中倒是有这个控件,叫CDateTimeCtrl.大概是这个样子: 二.要实现的功能 要实现的功能包含: 编辑时.分. ...
- 用了skin皮肤控件之后,报错:容量超出了最大容量 参数名:capacity
http://blog.csdn.net/keenweiwei/article/details/7403869 用了皮肤控件之后,报错:容量超出了最大容量 参数名:capacity MessageBo ...
随机推荐
- VSTO外接程序项目只用1个文件实现Ribbon CustomUI和CustomTaskpane定制【VB.Net版】
VSTO中的自定义功能区和自定义任务窗格需要用到各种命名空间.添加所需文件,才能实现.后来我发现可以把所有代码都写在ThisAddin.vb这个默认文件中. 大家可以在Visual Studio中创建 ...
- python调用存储过程失败返回1787错误
(1787, 'When @@GLOBAL.ENFORCE_GTID_CONSISTENCY = 1, the statements CREATE TEMPORARY TABLE and DROP T ...
- HotSpot Java对象创建,内存布局以及访问方式
内存中对象的创建.对象的结构以及访问方式. 一.对象的创建 在语言层面上,对象的创建只不过是一个new关键字而已,那么在虚拟机中又是一个怎样的过程呢? (一)判断类是否加载.虚拟机遇到一条new指令的 ...
- kafka + spark Streaming + Tranquility Server发送数据到druid
花了很长时间尝试druid官网上说的Tranquility嵌入代码进行实时发送数据到druid,结果失败了,各种各样的原因造成了失败,现在还没有找到原因,在IDEA中可以跑起,放到线上就死活不行,有成 ...
- python中字典以key排序,以value排序。以及通过value找key的方式
1.sorted函数首先介绍sorted函数,sorted(iterable,key,reverse),sorted一共有iterable,key,reverse这三个参数. 其中iterable表示 ...
- 微信小程序开发-易源API的调用
起因:在开发一款旅游类微信小程序时,需要接入大量的景点信息,此时可以选择自己新建数据库导入数据并读取,但是对于我来说,因为只有一个人,数据库还涉及到需要维护方面,选择调用已有API. 过程:首先查阅微 ...
- FPGA设计思想之串并转换
数据流中,用面积换速度-串行转并行的操作 并行转串行数据输出:采用计数方法,将并行的数据的总数先表示出来,然后发送一位数据减一,后面的接收的这样表示: data_out <= data[cnt] ...
- Oracle 10G 服务端的升级
第一步:备份 rman target / backup full database plus archivelog; 第二步:升级 解压升级包到soft目录下,修改所有者 chown -R oracl ...
- python多线程交替打印abc以及线程池进程池的相关概念
import threading import sys import time def showa(): while True: lockc.acquire() #获取对方的锁,释放自己的锁 prin ...
- http、https的压测工具——apacheab 、webbench
http的压测工具 搞清楚不同的安装方法,执行文件.配置文件的路径. yum安装: 执行文件在/usr/bin 下,一般为执行文件 配置文件在/etc目录下 conf文件 源码安装: 执行文件在安装文 ...