el-date-picker 日期区间组件,选中第一个日期后,关闭日期选择器弹窗,自动填补第二个日期为一周后日期

文章描述了在使用ElementUI的el-date-picker组件时遇到的问题,即在用户选中第一个日期后,`@calendar-change`的date参数保留了旧值,导致与组件绑定显示的日期不一致。作者试图通过`handleClose()`方法强制关闭弹窗,但发现`isVisible=false`无效。同时,文章还提到如何在关闭弹窗后手动设置日期范围。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需要解决的问题:

1.强制关闭弹窗

2.选中第一个日期后 @calendar-change 的 date参数 会保留上一次选中的数据,未清除,导致,点击选中的日期和组件绑定显示的日期显示不一致

<template> 
  <el-date-picker
    ref="datePicker"
    class="date-warp"
    type="daterange"
    v-model="state.getDate"
    range-separator="_"
    value-format="YYYY-MM-DD"
    prefix-icon="none"
    :format="'YYYY-MM-DD'"
    @calendar-change="calendarChange"
    @visible-change="visibleChange"
  />

</template>
<script lang="ts" setup>
const state = reactive<any>({
      getDate:[]
      })
const calendarChange = (val: [Date, Date | null]) => {
  const [start, end] = val;
  pickDay.value = timeFormat(start, format);
  if (datePicker.value) {
    datePicker.value.handleClose(); //强制关闭弹窗 , 使用isVisible = false 无效
  }
};

// 关闭日期弹窗后 手动设置显示一周的区间日期
const visibleChange = (visibility: boolean) => {
  if (!visibility) {
    const firstDay = new Date(pickDay.value);
    firstDay.setDate(firstDay.getDate() + 6);
    const sevenDay = firstDay;
    state.getDate = [pickDay.value, timeFormat(sevenDay, format)];
    search(state.searchForm);
  }else {
     // 显示时间弹窗前清掉数据,否则 calendarChange 里面获取的日期会有问题
    state.getDate = [];
  }
};
</script>

效果图:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值