• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Elementui日期选择器,datarange设置多个禁用日期

武飞扬头像
那给我好了
帮助1

写在前面:我真是服了JavaScript

 我们在使用elementui的日期选择器时,常常需要请求后端的数据,然后根据后端的回传来确定多个禁用的日期,实现类似于下图的效果:

学新通 

后端传输过来的数据为类似“2022-01-01”这样的字符串,需要先使用new Date("2022-01-01")转化为日期对象

具体代码如下:

  1.  
    <el-date-picker
  2.  
    v-model="info.date"
  3.  
    type="daterange"
  4.  
    start-placeholder="开始日期"
  5.  
    end-placeholder="结束日期"
  6.  
    value-format="yyyy-MM-dd"
  7.  
    :picker-options="pickerOptions"
  8.  
    :disabled="datepickerDisable">
  9.  
    </el-date-picker>
  1.  
    export default {
  2.  
    data() {
  3.  
    var _this=this
  4.  
    return {
  5.  
    pickerOptions: {
  6.  
    disabledDate(date) {
  7.  
    date.setHours(8)
  8.  
    if (date < Date.now() - 8.64e7 || date > Date.now() 13*8.64e7) {
  9.  
    return true
  10.  
    }
  11.  
    // 这里不能用foreach
  12.  
    for (let i=0;i<_this.disabledDates.length;i ) {
  13.  
    if (date.getTime() === _this.disabledDates[i].getTime()) {
  14.  
    console.log(date,_this.disabledDates[i].getTime())
  15.  
    return true
  16.  
    }
  17.  
    }
  18.  
    return false
  19.  
    }
  20.  
    }
  21.  
    }
  22.  
    },
学新通

踩过的坑:

1.在 disabledDate 中this是一个undefined,因此需要用 var _this=this 将this提前保存起来

2.在javascript中,foreach是一个同步函数(搞不懂为什么这样设计),因此不能使用foreach对日期进行判断,需要使用for循环(因为这个我找了两小时的博客)

3.disabledDate 中传入的date的时间为8:00,而new Date()出来的日期对象为0:00,因此需要设置一下时间 date.setHours(8)

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhggjgki
系列文章
更多 icon
同类精品
更多 icon
继续加载