element ui 中日期选择器disabledDate的几种用法

用法一:

写法1:可以直接在data 中定义,但是需要处理复制的,那就是需要在methods中定义的

<template>
    <el-date-picker
        v-model="queryParams.fodTimeStart"
        value-format="yyyy-MM-dd-HH-mm-ss"
        type="datetime"
        size="mini"
        prefix-icon="el-icon-date"
        :picker-options="pickerOptions1"
        placeholder="开始时间"
        />
</template>



data(){
  
  return {

            pickerOptions1: {
                               // 此时,日期选择器  只能选择当前时间之前的,   
                              return time.getTime() > Date.now();
                             }
          }

}

用法二:

对于复制的逻辑,可以在methods中定义,然后在引用

<template>
           <!-- 开始时间 -->
          <el-date-picker
              v-model="queryParams.fodTimeStart"
              value-format="yyyy-MM-dd-HH-mm-ss"
              type="datetime"
              size="mini"
              prefix-icon="el-icon-date"
              :picker-options="pickerOptions1"
              placeholder="开始时间"
            />

             <!-- 终止时间 -->
          <el-date-picker
              v-model="queryParams.fodTimeEnd"
              value-format="yyyy-MM-dd-HH-mm-ss"
              type="datetime"
              size="mini"
              prefix-icon="el-icon-date"
              :picker-options="pickerOptions2"
              placeholder="截止时间"
            />

</template>



data(){
         return{
 queryParams: {
  
        // 开始时间
        fodTimeStart: null,
        // 终止时间
        fodTimeEnd: null,
  
      },

  // 开始时间,我们设置选中的时间不允许超过当前的时间
      pickerOptions1: {
        disabledDate(time) {
          return time.getTime() > Date.now();
        },
      },

  // 结束时间,结束时间我们选择,是要在开始时间之前的禁用,然后,当天以后的时间也禁用
  //  比如,开始时间我选择周二,今天是周五,那么就是 周二到周五可以选择,其他的禁止选择
  //  这样我需要拿到在data中定义的开始时间,就是要在methods来写了


  // pickerOptions3 是在上面模板中定义的
     pickerOptions3: {

  // this.disabledDate2 是在methods中定义的
        disabledDate: this.disabledDate2,
      },

  }

},
 // 可以在watch  做一个小小的优化
watch: {

    // 选择开始时间,结束时间 直接清空,用户体检上会更好
    "queryParams.fodTimeStart"(newVal, oldVal) {
      this.queryParams.fodTimeEnd = "";
    },
  },
methods:{
   disabledDate(time) {

       //  判断有没有 开始时间 ,如果没有,直接禁用当天之后的时间
      if (this.queryParams.fodTimeStart != null) {

        // 拿到开始选择的时间   为什么要去掉后九位是因为我的时间格式不能转化为时间戳而做的处理
        const truncatedString = this.queryParams.fodTimeStart.slice(0, -9); // 去掉后九位字符
        //  转化时间戳  减去86400000  是24小时的毫秒数
        const timestamp = new Date(truncatedString).getTime() - 86400000;

        //  做出判断
        return time.getTime() < timestamp || time.getTime() > Date.now();
      } else {
        return time.getTime() > Date.now();
      }
    },
}

效果图:初始选择时间 

结束时间

 

 

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值