el-date-picker 不能大于当前日期时间,精确到时分秒

之前以为使用 disabledDate 限定日期就够了,后面说需要限制在此刻之前更严谨。这里就需要更改selectableRange的值。

刚开始想使用事件监听的方式,比如 change、focus 事件,但是发现不能,这里的事件是针对输入框的,而不是弹出来的 date-picker里面的输入选择框。所以使用监听他的值。

当我们日期每次变动的时候都需要去验证是否是当前日期,然后才看是否修改selectableRange的值

template 部分

<el-date-picker
  placeholder="选择日期时间"
  type="datetime"
  value-format="yyyy-MM-dd HH:mm:ss"
  :picker-options="options"
  v-model="ruleForm.time"
  style="width:100%"></el-date-picker>

script 部分

{
  data() {
    return {
      ruleForm: {
        time: ''
      },
      options: {
        // 时间不能大于当前时间
        disabledDate: time => {
          return time.getTime() > Date.now()
        },
        selectableRange: '00:00:00 - 23:59:59'
      }
    }
  },
  watch: {
    'ruleForm.time'(selectTime) {
      const date = new Date(new Date(selectTime).setHours(0, 0, 0, 0)).getTime()
      const today = new Date(new Date().setHours(0, 0, 0, 0)).getTime()
      const curTime = new Date()
      if (date >= today) {
        // 当选择的日期就是当天的时候,这个时候就要限制时间应当小于此时此刻的时分秒
        this.options.selectableRange = `'00:00:00 - ${String(curTime.getHours()).padStart(2, '0')}:
        ${String(curTime.getMinutes()).padStart(2, '0')}:${String(curTime.getSeconds()).padStart(2, '0')}`
      } else {
        // 当选择的日期小于当天的时候,这时需要把时分秒的限制放开,否则不能选择
        this.options.selectableRange = '00:00:00 - 23:59:59'
      }
    }
  }
}

 

 

  • 0
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值