使用el-time-picker实现开始时间和结束时间选择

1)问题

在工作中我们会经常使用el-time-picker组件来实现开始时间和结束时间的选择,但是element并没有直接提供给我们可以通过有范围限制的选择,而需要我们自己使用picker-options属性结合selectableRange参数实现时间选择框的选择范围规则

2)分析时间选择范围规则

  • 开始时间选择框

    • 如果有结束时间,则00:00:00-结束时间
    • 没有结束时间,则00:00:00-23:59:59
  • 结束时间选择框

    • 如果有开始时间,则开始时间-23:59:59
    • 如果没有开始时间,则00:00:00-23:59:59

3)代码实现

我们将picker-options属性值写在computed计算属性中(也可以以对象的形式赋值给picker-options属性值,可以根据自己写代码的习惯来决定何种方式)

computed: {
    // 开始时间
    startTimeOptions() {
        return {
            selectableRange: `00:00:00-${this.form.endTime ? this.form.endTime : '23:59:59'}`
        }
    },
        // 结束时间
        endTimeOptions() {
            return {
                selectableRange: `${this.form.startTime ? this.form.startTime : '00:00:00'}-23:59:59}`
            }
        }
}

将上面的计算属性赋值给picker-options属性

<el-form-item label="开始时间:">
    <el-time-picker
                    v-model="form.startTime"
                    placeholder="开始时间"
                    :picker-options="startTimeOptions"
                    >
    </el-time-picker>
</el-form-item>
<el-form-item label="结束时间:">
    <el-time-picker
                    v-model="form.endTime"
                    placeholder="结束时间"
                    :picker-options="endTimeOptions"
                    >
    </el-time-picker>
</el-form-item>
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
el-date-picker 组件默认只能选择日期,如果需要选择时间,需要使用 el-time-picker 组件。如果想要限制 el-date-picker 只能选择当天的开始时间结束时间,可以通过设置其 disabledDate 属性来实现。具体方法是在 el-date-picker 标签上添加 :disabled-date="disabledDate" 属性,并在 Vue 实例中添加 disabledDate 方法来实现日期的限制。例如: ```html <template> <div> <el-date-picker v-model="pickedDate" :picker-options="pickerOptions" :disabled-date="disabledDate" type="date" placeholder="选择日期"> </el-date-picker> </div> </template> <script> export default { data() { return { pickedDate: '', pickerOptions: { disabledDate: (time) => { const start = new Date() start.setHours(0, 0, 0, 0) const end = new Date() end.setHours(23, 59, 59, 999) return time.getTime() < start.getTime() || time.getTime() > end.getTime() } } } }, methods: { disabledDate(time) { const start = new Date() start.setHours(0, 0, 0, 0) const end = new Date() end.setHours(23, 59, 59, 999) return time.getTime() < start.getTime() || time.getTime() > end.getTime() } } } </script> ``` 在上面的示例中,我们定义了一个 disabledDate 方法,它返回一个函数,该函数接受一个时间参数,如果该时间早于今天的开始时间或晚于今天的结束时间,则返回 true,表示该日期不可选。同时,我们还将 pickerOptions 中的 disabledDate 属性设置为我们定义的 disabledDate 方法,以确保日期选择器受到限制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值