el-date-picker:选择日期的限制

这篇具有很好参考价值的文章主要介绍了el-date-picker:选择日期的限制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言:

基本使用:

时间区间:

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

day.js简化版1

day.js简化版2


前言:

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

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

基本使用:

先看下方代码

<template>
    <div class="content">
        <el-date-picker v-model="value" type="date" placeholder="选择日期">
        </el-date-picker>
    </div>
</template>

<script>
export default {
    data() {
        return {
            value: ''
        };
    }
};
</script>

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

el-date-picker type=

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

el-date-picker type=

<el-date-picker v-model="value" type="date" placeholder="选择日期" :picker-options="pickerOptions"></el-date-picker>

data() {
        return {
            value: '',
            pickerOptions: {
                disabledDate(time) {
                    return time.getTime() < Date.now();
                },
            }
        };
   },

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

el-date-picker type=

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

时间区间:

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

const DAY = 10
const nowTimer = Date.now()
const lastTimer = nowTimer + DAY * 24 * 60 * 60 * 1000

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

pickerOptions: {
    disabledDate(time) {
        return time.getTime() < nowTimer || time.getTime() > lastTimer;
    },
}

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

el-date-picker type=

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

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

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

 <el-date-picker v-model="value" type="daterange" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>

el-date-picker type=2.如何去限制选择区间在本月

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

① 获取当前月份

      const date = new Date()
      const year = date.getFullYear(); //获取年份
      let month = date.getMonth() + 1; //获取月份

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

const startDate = `${year}-${month}-01 00:00:00`

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

const lastDay = new Date(year, month, 0).getDate(); //获取当月最后一日
const endDate = `${year}-${month}-${lastDay} 23:59:59`

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

new Date(startDate).getTime(), new Date(endDate).getTime()

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

    const getDateRange = () => {
      const date = new Date()
      const year = date.getFullYear(); //获取年份
      let month = date.getMonth() + 1; //获取月份
      const lastDay = new Date(year, month, 0).getDate(); //获取当月最后一日
      month = month < 10 ? '0' + month : month;
      const startDate = `${year}-${month}-01 00:00:00`
      const endDate = `${year}-${month}-${lastDay} 23:59:59`
      return [new Date(startDate).getTime(), new Date(endDate).getTime()]
    }
pickerOptions: {
    disabledDate(time) {
        const [startTimer, endTimer] = getDateRange()
        return time.getTime() < startTimer || time.getTime() > endTimer;
    },
}

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

el-date-picker type=

day.js简化版1

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

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

import dayjs from "dayjs"

const getDateRange = () => {
    const startTimer = dayjs().startOf('month').valueOf()
    const endTimer = dayjs().endOf('month').valueOf()
    return [startTimer, endTimer]
}

pickerOptions: {
    disabledDate(time) {
        const [startTimer, endTimer] = getDateRange()
        return time.getTime() < startTimer || time.getTime() > endTimer;
    },
}

el-date-picker type=

day.js简化版2

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

import dayjs from "dayjs"
const isBetween = require('dayjs/plugin/isBetween')
dayjs.extend(isBetween)

const getDateRange = () => {
    const startDate = dayjs().startOf('month').format("YYYY-MM-DD")
    const endDate = dayjs().endOf('month').format("YYYY-MM-DD")
    return [startDate, endDate]
}

disabledDate(time) {
     const [startDate, endDate] = getDateRange()
     const result = dayjs(time).isBetween(startDate, dayjs(endDate), 'day', '[]')
     return !result
},

el-date-picker type=

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

如果觉得本文对您有一丢丢帮助,或者帮助开拓了一点点思路之类的,请动动小手点个赞什么的,在此谢过!文章来源地址https://www.toymoban.com/news/detail-708185.html

到了这里,关于el-date-picker:选择日期的限制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • el-date-picker限制选择的时间范围

     限制选择今天之前的时间,并且只能选择一天                 只能选择今天往后365天

    2024年02月10日
    浏览(48)
  • el-date-picker(日期时间选择)那些事

    用于记录工作和学习中遇到的问题 vue3+element-plus 日期时间格式转换 组件默认的格式:2024-02-01T16:00:00.000Z 需要转换成:YYYY-MM-DD HH:mm:ss

    2024年02月22日
    浏览(44)
  • 三分钟教你如何实现el-date-picker动态限制选中日期

    首先在页面上插入一个el-date-picker组件并绑定一个响应值 这里我们需要day.js这个库来帮助我们处理Date对象,便于日期的计算 然后我们使用disable-date属性控制哪些日期需要禁用 该属性接受一个函数函数的参数为一个date对象代表组件中每一个可能被选中的日期。 函数的返回值

    2024年02月03日
    浏览(43)
  • el-date-picker日期选择器奇怪的问题解决

    问题描述 :点击日期选择器,出现日历下拉框,选择了日期后绑定的value值不变;绑定 @change 事件,监听不到 解决方案 :添加input事件,$forceUpdate()

    2024年02月07日
    浏览(42)
  • 【VUE】el-date-picker日期选择器回显

    使用elementUI - el-date-picker 日期选择器 在请求到后端接口后,返回的数据中,日期数据回显到页面的el-date-picker组件中 1.  Vue.set( target, propertyName/index, value )      数组:第一个参数是要修改的数组, 第二个值是修改的下标或字段,第三个是要修改成什么值。     2. this.$set(this

    2024年02月11日
    浏览(62)
  • element ui日期选择器el-date-picker选择不能超过某个日期

    html片段: data对象中pickerOptions: methods里面的dateSelFunc方法: 这样就可以实现了,如图2023年11月10号的不能选择: *喜欢玩网络小游戏的,可以进入洽西游戏网,很多好玩的小游戏,点击下方链接进入 洽西游戏 http://www.qiaxi.cc

    2024年04月13日
    浏览(52)
  • element-ui - 日期选择器el-date-picker 设置禁止选择日期

    使用日期选择器时,有的时候需要禁止选择一些日期,我们可以通过快捷选项 picker-options 对象中的禁用日期属性 disabledDate 来设置。 只能选择今天以及今天之后的日期 只能选择今天之后的日期(不包含今天) 只能选择今天以及今天之前的日期 只能选择今天之前的日期(不包

    2024年02月11日
    浏览(71)
  • element ui el-date-picker 禁止选择指定日期

    1)禁止选择当天之前的日期 禁止选择包含当天及其之前的日期 2)禁用选择当天之后的日期 禁止选择包含当天及其之后的日期 3)禁止选择自定义加载的日期,比如打开编辑框,禁止选择当前数据回显日期之前的日期 禁止选择之后  禁止选择之前   - 8.64e7 表示可选择当天时

    2024年02月11日
    浏览(179)
  • el-date-picker实现通过其他方式触发日期选择器

    el-date-picker 目前只能通过点击input输入框触发日期选择器,项目中需要通过其他方式触发日期选择器同时把input输入框去掉,如点击另一个按钮事件 来触发日期选择器框展开。 该模块由于后端接口数据传输限制 在前面文章里做了些许改动。 需求左右切换 可以快速找到年份,

    2023年04月08日
    浏览(43)
  • element-ui 日期时间选择器el-date-picker 设置禁止选择日期

    使用日期选择器时,有的时候需要禁止选择一些日期,我们可以通过快捷选项 picker-options 对象中的禁用日期属性 disabledDate 来设置。

    2024年02月11日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包