解决需求:antd vue中a-range-picker组件日期选择控制可选范围

需求描述:要求时间选择最大只能选择七天,及用户点击第一个时间之后,第二个时间只能选择前后七天内的时间。第一个时间可以非当日。

解决方法:用户点击第一个日期时使第一个日期前后七天范围外的日期变为不可选,使用a-range-picker组件的事件calendarChange和属性disabledDate结合。

组件部分:
<a-range-picker
                  :ranges="{
                    今天: [moment(), moment()],
                    近7天: [moment().subtract('days', 6), moment()]
                  }"
                  show-time
                  @calendarChange="panelChange"
                  :disabled-date="disableDate"
                  format="YYYY-MM-DD HH:mm:ss"
                  @change="datePickerOnChange"
                  style="width:100%;padding-right:3vw"
                />
data定义部分:
currentDate: null,
方法部分:calendarChange事件定义的方法在日期面板变化时调用,即用户每次在日期面板上的选择都会调用方法。

1,将用户点击的第一个日期存在currentDate,在disableDate方法中使用。当用户点击第二个日期时清空currentDate,即清空不可选日期。

2,在disableDate中获取并计算currentDate前后七天外的日期返回给disableDate,设置为不可选。

panelChange(date, dateString) {
      console.log('456', date)
      if (date[0] && !date[1]) {
        this.currentDate = date[0]
      } else if (date[0] && date[1]) {
        this.currentDate = null
      }
    },
      disableDate(time) {
      if ( this.currentDate ) {
        const one = 7 * 24 * 3600 * 1000
        const minTime = this.currentDate - one
            // 当前日期 + one = 7天之后
        const maxTime = this.currentDate + one
         return time < minTime || time > maxTime
      } else {
        return null
      }
    },

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值