element ui时间选择器el-date-picker关于日期禁用disabledDate的使用

项目中很多场景都用到时间范围选择的组件:

 这时候我们过多选择的是elment ui里面的el-date-picker组件,但是又嫌弃人家原始的这个丑陋

所以选择自己组装,有没有小伙伴像我这样写的呢:

//页面组件
        <el-col :span="6">
          <el-date-picker 
             v-model="datePickerStart" 
             :disabled-date="disabledDateStart" 
             type="date"
             value-format="yyyy-MM-dd" 
             placeholder="开始时间" />
        </el-col>
        <el-col :span="1">
          <div class="blockText">-</div>
        </el-col>
        <el-col :span="6">
          <el-date-picker 
              v-model="datePickerEnd" 
              :disabled-date="disabledDateEnd" 
              type="date"  
              value-format="yyyy-MM-dd"
              placeholder="结束时间" />
        </el-col>


//日期禁用方法
    disabledDateStart(time) {
      const beginDateVal = this.datePickerEnd;
      if (beginDateVal) {
        return (
          time.valueOf() >=
          new Date(beginDateVal).valueOf() - 24 * 60 * 60 * 1000 + 1
        );
      }
    },

    disabledDateEnd(time) {
      const beginDateVal = this.datePickerStart;
      if (beginDateVal) {
        return (
          time.valueOf() <=
          new Date(beginDateVal).valueOf() - 24 * 60 * 60 * 1000 + 1
        );
      }
    },

发现始终不触发disabledDate,不会走进禁用的方法。寻思再三后,看官网介绍它并不是组件的Attributes。

 哈哈最终原来是这么使用的:

<el-date-picker 
  v-model="datePickerStart"  
  type="date"
  :picker-options="{ disabledDate: disabledDateStart }" 
  value-format="yyyy-MM-dd" 
  placeholder="开始时间"
/>

也可以这么使用

<el-date-picker 
    v-model="datePickerStart" 
    type="date"
    :picker-options="pickerOptions" 
    value-format="yyyy-MM-dd" 
    placeholder="开始时间" 
/>

//在date里定义
 data() {
    return {
      pickeroptions: {
        disabledDate: time => {
          const beginDateVal = this.datePickerEnd;
          if (beginDateVal) {
            return (
              time.valueOf() >=
              new Date(beginDateVal).valueOf() - 24 * 60 * 60 * 1000 + 1
            );
          }
        }
      },
      datePickerStart: "",
      datePickerEnd: "",
    }
  }

个人推介第一个,符合我们日常的逻辑

猜你喜欢

转载自blog.csdn.net/qq_39330397/article/details/132186025