Element UI 时间选择器禁用过去时间到分钟

版权申诉
5星 · 超过95%的资源 1 下载量 116 浏览量 更新于2024-08-20 收藏 17KB DOCX 举报
"在JavaScript和Element UI框架中,如何实现TimePicker时间选择器禁用部分时间,特别是禁用到分钟的细节" 在项目开发中,经常会有特定的时间选择限制,例如仅允许用户选择当前时间之后的时刻。在Element UI中,我们可以使用TimePicker组件来实现这一功能。本示例主要探讨了两种实现方式:使用DateTimePicker组件或组合使用DatePicker和TimePicker。本文将详细介绍使用DatePicker和TimePicker结合的方式。 1. DateTimePicker 日期时间选择器: DateTimePicker 是Element UI提供的一种复合组件,它可以同时选择日期和时间。但是,若需禁用特定时间,可能需要更复杂的配置。 2. DatePicker 和 TimePicker 组合使用: 这种方法更为灵活,我们可以分别设置日期和时间的选择限制。在示例代码中,我们使用了两个组件:一个用于日期选择,另一个用于时间选择。 关键在于`picker-options`属性,它允许我们定制时间选择器的行为。在DatePicker组件中,通过`picker-options`设置`disabledDate`属性,禁用比当前时间早的日期。在TimePicker组件中,通过`picker-options`的`selectableRange`属性来设定可选的时间范围。 以下代码展示了如何实现这一功能: ```html <el-date-picker v-model="formInline.inventoryDate" type="date" align="right" placeholder="请选择日期" :picker-options="pickerOptions" value-format="yyyy-MM-dd" format="yyyy-MM-dd" @change="changeDate" ></el-date-picker> <el-time-picker v-model="formInline.inventoryDateTime" type="date" align="right" placeholder="请选择时间" :picker-options="{ selectableRange: this.startTimeRange }" @change="changeTime" value-format="HH:mm:ss" format="HH:mm:ss" ></el-time-picker> ``` 在Vue组件的数据对象中,定义`pickerOptions`和`startTimeRange`: ```javascript data() { return { pickerOptions: { disabledDate: time => time.getTime() < Date.now() - 3600 * 1000 * 24 // 禁用24小时之前的时间 }, startTimeRange: '' }; }, ``` 并创建一个`watcher`来监听`formInline.inventoryDate`的变化,当日期改变时,更新`startTimeRange`,使其始终为当前时间之后的一分钟: ```javascript watch: { 'formInline.inventoryDate': { deep: true, handler(newValue, oldValue) { if (newValue) { let nowDate = this.$options.filters['sendTimeDate'](new Date().getTime() + 60 * 1000); // 一分钟之后的时间 let dt = nowDate.split(''); let st = ''; if (newValue.split('')[0] === dt[0]) { // 如果年份相同 // ... 更新小时、分钟和秒,形成新的可选时间范围 } } } } }, ``` 这段代码中,`sendTimeDate`是一个自定义过滤器,用于格式化时间,具体实现可以根据项目需求进行编写。在`watcher`中,我们检查新选择的日期是否与当前日期相同,如果相同,我们需要更新`startTimeRange`,使其始终为新的一分钟之后的时间。 通过这种方式,我们可以精确地控制用户在TimePicker组件中可以选择的时间,确保他们只能选择当前时间之后的时刻,并且禁用到了分钟级别。这为项目需求提供了灵活且细致的时间选择控制。