本文介绍: elementui作为vue的龙头ui组件库,深受前端开发者的喜爱。本文着重记录如何使用eldatepicker日期选择器,怎么去限制选择日期。先上官网链接

目录

前言:

基本使用:

时间区间:

公司业务:选择一个日期区间,但是只能选择本月


elementui作为vue的龙头ui组件库,深受前端开发者的喜爱。

本文着重记录如何使用eldatepicker日期选择器,怎么去限制选择日期。先上官网链接el-date-picker

先看下方代码

这是一个最基本的使用方式,长这个样子。

 下面先提一个需求,要求不能选择当前日期之前的日期,怎么办?看pickeroptions属性我们需要disabledDate上做文章

注意:返回的是布尔值,当为true时候意思就是禁用,拿时间戳来进行比较可以打印time看下是什么其实就是一个个时间,取时间戳与当前时间进行比较,如果小于当前时间,那就意味着是之前的日期,为true,禁止选择,反之则可以选择

 可以看到鼠标放在灰色背景日期上时,是禁止点击选择的。

难度升级:日期只能选择今后十天的日期,之前的日期和十天之后的日期都不能选择;其实这个也比较简单,首先我们要算出十天之后的日期的时间戳,这个很容易

而后我们依然在disabledDate中去进行比较!

看看效果:写此文档的日期是2023-03-31,我们只能选择04-01至04-10的日期,没啥毛病

这里我把在公司写的一个业务也放上来,需求是,选择一个日期区间,要求只能在当前月选择!

1.首先使用el-date-picker组件设置typedaterange,这个不存在什么问题

2.如何限制选择区间在本月

有了上面的一些经验之后,很明显我只需要time.getTime()这个值小于月初的那天为true大于月末的那天为true即可,那这样有了思路简单很多

获取当前月份

获取当前月的第一天,都是从1号开始的,这个没啥异议吧

获取当前月的最后一天,这个有点问题,因为有的月30天,有的月31天,2月甚至是28天或者是29天,有的人可能会想着还需要判断当前年是否闰年或者平年,再以此在判断当前月是多少天,这样就复杂了,js date对象有更简单方式

④ 把开始时间和结束事件整成时间戳,方便计较

⑤ 写成一个方法,有返回结果返回结果一个数组包含两个元素,开始时间戳以及结束时间戳

效果可以看出这便是限制成功了!

本人喜欢在项目安装day.js这个包,作为项目中有关时间处理插件day.js

 我们使用插件可以很轻易的得到我们想要的时间。

思路就是利用day.js中的isBetween插件进行日期区间判断

day.js非常轻巧,功能强大,插件众多,用好了绝对前端的一大杀器,感兴趣的不妨试试!

如果觉得本文对您有一丢丢帮助,或者帮助开拓了一点点思路之类的,请动动小手点个赞什么的,在此谢过!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注