Element UI的日期范围选择:限制选定日期在30天内

原文地址:【element】实现基于Element UI的日期范围选择:限制选定日期在30天内_daterange设置范围30天-CSDN博客

在Web应用开发过程中,我们经常遇到需要用户在一个特定日期范围内做出选择的场景。使用Element UI的el-date-picker组件,我们可以轻松实现这一功能。本文将指导你如何设置el-date-picker,使得用户选择的第二个日期必须在第一个日期的30天之内,并且限制不允许选择未来的日期。

1. 添加el-date-picker组件
<el-date-picker
    v-model="date2"
    :format="'yyyy-MM-dd'"
    :value-format="'yyyy-MM-dd'"
    :picker-options="pickerOptions"
    type="daterange"
    range-separator="至"
    start-placeholder="开始日期"
    end-placeholder="结束日期">
</el-date-picker>
2. 设置pickerOptions

在data函数中定义pickerOptions,包含disabledDate和onPick两个属性,用于控制日期的可选范围和处理用户的选择行为。

data() {
    return {
        selectDate: '', // 存储第一个选定日期的时间戳
        pickerOptions: {
            disabledDate: (time) => {
                if (this.selectDate !== '') {
                    const oneDay = 24 * 3600 * 1000; // 一天的毫秒数
                    const thirtyDays = 30 * oneDay; // 30天的毫秒数
                    const minTime = this.selectDate - thirtyDays;
                    const maxTime = this.selectDate + thirtyDays;
                    let today = new Date();
                    today.setHours(0, 0, 0, 0); // 设置为今天的0点
                    // 限制可选日期:不可早于minTime,不可晚于maxTime和今天
                    return time.getTime() < minTime || time.getTime() > maxTime || time.getTime() > today.getTime();
                }
            },
            onPick: ({ maxDate, minDate }) => {
                this.selectDate = minDate ? minDate.getTime() : '';
                if (maxDate) {
                    this.selectDate = '';
                }
            },
        }
    };
},

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Element UI提供了一个DatePicker组件,可以通过设置type属性为"daterange"来实现日期范围选择。而要实现季度选择功能,可以通过自定义快捷选项来实现。 以下是示例代码: ```html <template> <el-date-picker v-model="dateRange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" type="daterange" :picker-options="pickerOptions" ></el-date-picker> </template> <script> export default { data() { return { dateRange: [], // 存储选中日期范围 pickerOptions: { shortcuts: [ { text: "本季度", onClick(picker) { let start = new Date(), end = new Date(); let now = new Date(); let quarter = Math.floor(now.getMonth() / 3); // 获取当前季度 start.setMonth(quarter * 3); // 设置季度开始月份 start.setDate(1); // 设置季度开始日期 end.setMonth(quarter * 3 + 2); // 设置季度结束月份 end.setDate(31); // 设置季度结束日期 picker.$emit("pick", [start, end]); // 触发选中日期范围事件 }, }, { text: "上季度", onClick(picker) { let start = new Date(), end = new Date(); let now = new Date(); let quarter = Math.floor(now.getMonth() / 3) - 1; // 获取上个季度 start.setMonth(quarter * 3); // 设置季度开始月份 start.setDate(1); // 设置季度开始日期 end.setMonth(quarter * 3 + 2); // 设置季度结束月份 end.setDate(31); // 设置季度结束日期 picker.$emit("pick", [start, end]); // 触发选中日期范围事件 }, }, { text: "去年本季度", onClick(picker) { let start = new Date(), end = new Date(); let now = new Date(); let quarter = Math.floor(now.getMonth() / 3); // 获取当前季度 start.setFullYear(now.getFullYear() - 1); // 设置年份为去年 start.setMonth(quarter * 3); // 设置季度开始月份 start.setDate(1); // 设置季度开始日期 end.setFullYear(now.getFullYear() - 1); // 设置年份为去年 end.setMonth(quarter * 3 + 2); // 设置季度结束月份 end.setDate(31); // 设置季度结束日期 picker.$emit("pick", [start, end]); // 触发选中日期范围事件 }, }, ], }, }; }, }; </script> ``` 以上代码中,我们定义了一个DatePicker组件,同时设置了type属性为"daterange",以实现日期范围选择功能。同时,我们定义了三个快捷选项,分别是"本季度"、"上季度"和"去年本季度",通过onClick事件来实现选中相应日期范围的操作。最后,我们将pickerOptions传递给DatePicker组件的picker-options属性中,从而使得快捷选项可以在DatePicker组件中显示出来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值