在写时间日期选择器的需求的时候,遇到了一个关于时间限制的问题,使用的组件库是element-ui,但是初来乍到的我只能做到限制今天之前的时间不能选,但是需求要求要当前时间之前的时分秒都不能选,看了一些博客,也解决了,但是在代码量这一块就写的比较复杂,有没有大神可以提供一些使用组件库自带的方法去优化这个需求,来自一个好学的菜刀,希望大佬们不吝赐教啊!!!
"ruleForm.time"
type="datetime"
placeholder="选择日期时间"
value-format="yyyy-MM-dd HH:mm:ss"
:picker-options="pickerOptions"
:default-time="'23:59:59'"
/>
```javascript
<script>
import moment from 'moment';
export default {
data(){
let disabledDate = date => {
return date.getTime() < new Date().getTime() - 24 * 60 * 60 * 1000;
};
return{
pickerOptions: {
disabledDate,
// selectableRange 用来限制时分秒的选择,这里要求只能选择当前时间之后到0点的时间点 但应该只限今天
selectableRange: '00:00:00 - 23:59:59',
},
ruleForm: {
time: ''
},
}
},
watch: {
'ruleForm.time'() {
// this.selectable();
const date = moment(this.ruleForm.time).startOf('day').format('x');
const nowDate = moment().startOf('day').format('x');
// 如果选择的是今天 则需要禁用已经过去的时间节点
if (date <= nowDate) {
// 默认选择的最新时间 是当前时间的两分钟后 (留出2分钟的富裕时间)
this.pickerOptions.selectableRange = (
`${moment().add(2, 'minutes').format('HH:mm:ss')} - 23:59:59`
);
}
// 如果是以后的日期,则不需要禁用时间节点
else {
this.pickerOptions.selectableRange = '00:00:00 - 23:59:59';
}
}
}
};
script>
没有好的方法了 ,你这个 还得用 moment 计算 。代码量 我觉得不多 。 如果多个地方用可以考虑封装一个组件