【第011篇】ElementUI的el-date-picker组件设置禁用日期范围(如流转期限,开始日期仅可以选择今天及之前,结束日期可以选择开始日期之后的日期)

<el-form-item label="流转期限" prop="ycsykssj">
	<el-date-picker v-model="lzqx" type="daterange" style="width: 100%" 
		range-separator="" 
		start-placeholder="开始日期" 
		end-placeholder="结束日期" 
		value-format="yyyy-MM-dd" 
		:clearable="false" 
		:picker-options="pickerDisabled" 
		@change="changeDate">
	</el-date-picker>
</el-form-item>

核心代码:

<script>
export default {
  data () {
    return {
      choiceDate0: '', // 第一个选择的日期
      choiceDate1: '', // 第二个选择的日期
      pickerDisabled: {
        onPick: ({
          maxDate, // 第一个值
          minDate // 第二个值
        }) => {
          this.choiceDate1 = '' // 每次点击的时候将第二个日期设置为空
          if (minDate) {
            this.choiceDate0 = minDate.getTime()
          } else {
            this.choiceDate0 = ''
          }
          if (maxDate) { // 当选择第二个值后,将第一个值清空。
            this.choiceDate0 = ''
            this.choiceDate1 = maxDate.getTime()
          }
        },
        disabledDate: (time) => {
          // 主要思路:
		  // (1)当没有点击的时候,限制只能选择今天及之前日期
		  // (2)当点击一次后,说明第一个值有值了,此时限制第二个值只能选择第一个值之后的日期
		  // (3)当点击第二次后,说明第二个有值了,此时限制第二个值只能选择第一个值之后的日期
          const choiceDateTime0 = new Date(this.choiceDate0).getTime() // 选中的第一个日期
          if (!this.choiceDate0 && !this.choiceDate1) { // 第一个和第二个均无值(说明没有点击)
            return time.getTime() > new Date() * 1 + 600 * 1000
          } else if (this.choiceDate0 && !this.choiceDate1) { // 第一个有值,但第二个无值(说明点击了一次)
            return time.getTime() < choiceDateTime0
          } else if (!this.choiceDate0 && this.choiceDate1) { // 第一个无值,但第二个有值(说明点击了两次次)
            return time.getTime() < choiceDateTime0
          } else {
            return time.getTime() > new Date() * 1 + 600 * 1000
          }
        }
      }
    }
  },
  methods: {
    changeDate (date) { // 组件值改变事件,当值改变后将第一个值和第二个值设置为空,方便下次设置日期范围。
      this.choiceDate0 = ''
      this.choiceDate1 = ''
    }
  }
}
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘉&年华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值