elment-ui 日期选择器 月份区间选择的问题解决

elment-ui 日期选择器月份区间选择的问题解决

问题描述

日期选择器-月份区间选择;设置不可用时间后,(如设置当前月份往前推两年时间不可用);
可用日期第一个月点击不生效。
在这里插入图片描述
点击四月不能选中,其他月份正常

解决方法

之前的不可用日期写法为:

const pre = new Date();
const twoYears = pre.setFullYear(pre.getFullYear() - 2);
return time.getTime() > Date.now() || time.getTime() < twoYears ;

这时候我把monthrange换成daterange以后,发现问题;例当前日期:2021-04-25,不可用日期为2019-04-25以前的日期,所以这时候我在想月份区间选择的时候,虽然显示的月份是可点击的,会不会是因为里面一些天数不可点击,导致可选日期的第一个月点击事件不生效。
在这里插入图片描述

所有我把返回不可用日期的两年前日期做了修改,返回的是两年前当前月份1号的日期,小于这个日期的月份不可用。问题迎刃而解。

// 两年内时间可选
const pre = new Date();
// 获取两年前这个月的1号
const fullDate = (pre.getFullYear() - 2) + "-" + (pre.getMonth()+ 1) + "-01";
const judgeDate = new Date(fullDate);
return time.getTime() > Date.now() || time.getTime() < judgeDate;
### 配置 Element-UI Datepicker 默认可选范围为1天或7天 Element-UI 的 `DatePicker` 组件可以通过 `picker-options` 参数来实现自定义日期选择范围的功能。为了满足需求,即让用户可以选择 **仅一天** 或者 **七天** 范围内的日期,可以按照以下方式配置。 #### 使用 picker-options 实现功能 通过设置 `disabledDate` 方法以及提供预设选项的方式,能够控制用户的选择行为并限定其只能选择特定的时间跨度。以下是完整的解决方案: ```javascript export default { data() { return { timeRange: [], // 存储选定的日期范围 pickerOptions: { // 自定义日期选择器的行为 shortcuts: [ { text: &#39;今天&#39;, onClick(picker) { const end = new Date(); const start = new Date(end); picker.$emit(&#39;pick&#39;, [start, end]); } }, { text: &#39;最近一周&#39;, onClick(picker) { const end = new Date(); const start = new Date(); start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); // 减去7天 picker.$emit(&#39;pick&#39;, [start, end]); } } ], disabledDate(time) { const today = new Date().setHours(0, 0, 0, 0); // 获当天零点时间戳 const sevenDaysAgo = new Date(today - (3600 * 1000 * 24 * 7)); // 计算前7天的零点时间戳 return time.getTime() > today || time.getTime() < sevenDaysAgo; // 只允许选择今天的前7天到今天之间的日期 } } }; } }; ``` 上述代码实现了两个主要目标: 1. 提供快捷按钮分别用于快速选择「今天」和「最近一周」[^1]。 2. 利用 `disabledDate` 属性禁用了超出指定范围(当前日期往前推7天)之外的所有日期[^2]。 #### HTML 结构部分 配合 Vue.js 数据绑定语法,在模板中嵌入如下结构即可完成界面展示与交互逻辑关联: ```html <el-date-picker v-model="timeRange" type="daterange" align="right" unlink-panels range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="pickerOptions"> </el-date-picker> ``` 此段HTML片段中的属性解释如下: - `v-model`: 将组件双向绑定到变量 `timeRange` 上以便获所选时间段; - `type`: 定义显示模式为区间(`daterange`)而非单个日期; - `align`, `unlink-panels`, etc.: 进一步优化用户体验的小特性调整; ### 注意事项 当应用以上方法时需要注意浏览器兼容性和实际业务场景下的特殊处理情况,比如节假日排除等功能扩展可能需要额外编写辅助函数来进行更复杂的过滤条件设定。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值