IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> elementui 日期选择器动态限制选择范围 -> 正文阅读

[JavaScript知识库]elementui 日期选择器动态限制选择范围

碰到个需求是在日期范围中,需要根据用户选择一个日期后动态的进行限制只能选择前后一个礼拜

一、 根据文档利用el-date-picker组件自带的pickerOptions属性可以完成这个需求,代码如下:

// template
<el-date-picker
    @blur="blurDate"
    v-model="form.dateArr"
    type="daterange"
    range-separator="-"
    value-format="yyyy-MM-dd"
    :pickerOptions="timeOption"
    start-placeholder="开始日期"
    end-placeholder="结束日期">
 </el-date-picker>


// data中
data() {
  return {
    timeOption: {
     onPick: ({ maxDate, minDate }) => {
         this.minDate = minDate
         this.maxDate = maxDate
      },
      disabledDate: (time) => {
        if (this.minDate && !this.maxDate) {
            const range = 6 * 24 * 3600 * 1000  // 要更改禁用的日期范围只要修改这里的代码就可以
             const minTime = this.minDate.getTime()
             const newTime = time.getTime()
             return newTime > (minTime + range) || newTime < (minTime - range) 
          }
          return false
      }
     },
     minDate: '',
     maxDate: ''
   }
}

效果图:
在这里插入图片描述

但是发现还是有点问题的,当用户点击一个日期后,关闭日期选择框再打开,会发现之前禁用的日期还被禁用着,这是个小问题,解决方案:

添加一个失焦事件,当失焦时清除选中的日期: 在el-date-picker标签中添加 @blur=“blurDate”,然后在methods中定义方法:

	<el-date-picker
       	@blur="blurDate" // 上面代码已添加失焦事件
    </el-date-picker>


    methods:{
        blurDate() {
            this.minDate = ''
        },
	}

二、补充 (日期控件其他控制禁用日期方法)

  1. 只能选择当前月份之前或者之后的月份
// template  el-date-picker类型为monthrange,选择月份
    <el-date-picker
        v-model="formData.month"
        :pickerOptions="timeOption"
        type="monthrange"
        range-separator="-"
        start-placeholder="开始月份"
        end-placeholder="结束月份" value-format="yyyy-MM">
    </el-date-picker>
    
    
// data中
data() {
    return {
       timeOption: {
          disabledDate: (time) => {
              var date = new Date();
              var year = date.getFullYear();
              var month = date.getMonth() + 1;
              if (month >= 1 && month <= 9) {
                  month = "0" + month;
              }
              var currentdate = year.toString()  + month.toString();
              var timeyear = time.getFullYear();
              var timemonth = time.getMonth() + 1;
              if (timemonth >= 1 && timemonth <= 9) {
                  timemonth = "0" + timemonth;
              }
              var timedate = timeyear.toString() + timemonth.toString();
              return currentdate > timedate;  // 修改这里的大于或小于控制禁用之前月份还是之后月份
          }
        },
    }
}

  1. 只能选择当天日期之前的或者之后的日期
// template
<el-date-picker
     v-model="form.date"
     type="daterange"
     range-separator="-"
     value-format="yyyy-MM-dd"
     :pickerOptions="timeOption"
     start-placeholder="开始日期"
     end-placeholder="结束日期">
 </el-date-picker>
 
 
// data中
data() {
  return {
     timeOption: {
        disabledDate:(time)=>{
             return time < new Date().now()  // 修改这里的大于或小于控制禁用之前日期还是之后日期
          }
        },
    }
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-18 17:32:01  更:2022-05-18 17:34:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:18:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码