element-ui 日期选择器如何禁用几个时间段

element-ui 日期选择器如何禁用几个时间段_第1张图片这个图片效果,禁用好几个时间段。这个一个童鞋私信问我的一个问题。

当时第一下觉得以前都是禁用一个时间段。。那么现在禁用多个就把条件判断写好啊。

      v-model="value2"

      type="date"

      placeholder="选择日期时间"

      align="right"

      @focus="changeEnd"

      :picker-options="pickerOptions">

    

 

addForm:{

                    date1:'2020-09-02',

                    date2:'2020-09-04',

                    date3:'2020-09-10',

                    date4:'2020-09-15',

                    date5:'2020-09-21',

                    date6:'2020-09-22',

                },

                pickerOptions: {  

                    disabledDate:(time)=>{

                       return(time.getTime() > new Date(this.addForm.date1).getTime()&&time.getTime() < new Date(this.addForm.date2).getTime())|| (time.getTime() > new Date(this.addForm.date3).getTime()&&time.getTime() < new Date(this.addForm.date4).getTime())|| (time.getTime() > new Date(this.addForm.date5).getTime()&&time.getTime() < new Date(this.addForm.date6).getTime());

  }     

                },

                value2: '',

 三个时间段,用||链接。这样写了判断条件。然后测试一下是好的。

问题1.

但是如果你的组件是type=daterange。选择的直接选择时间段的话,还是有问题。比如上面禁用了22号,如果你现在开始日期选择19。结束日期选择23.的确这两个都是可选的日期、但是作为时间段的话肯定是不行的。

因此对于需要选择时间段的情况。写两个type=date。然后分别限制就可以了。

 

问题2.

如果禁用的日期是接口给的,怎么改呢?

你可以在el-date-picker里面写个@focus="getDisabledData"

然后再methods里面接口返回了日期之后这样写

 this.pickerOptions=Object.assign({},this.pickerOptions,{

                   disabledDate:(time)=>{

                       return(time.getTime() > new Date(this.addForm.date1).getTime()&&time.getTime() < new Date(this.addForm.date2).getTime())||(time.getTime() > new Date(this.addForm.date3).getTime()&&time.getTime() < new Date(this.addForm.date4).getTime())||(time.getTime() > new Date(this.addForm.date5).getTime()&&time.getTime() < new Date(this.addForm.date6).getTime());

                   }

               })

 

你可能感兴趣的:(element-ui)