场景:form表单包含开始时间与结束时间,为防止开始日期晚于结束日期;或者是结束日期早于开始日期;必须控制日期的可选区域;
效果:
关键代码:
第一步:在日期组件上添加 :picker-options=" "
<el-form-item size="small" label="开始日期:" prop="start_time">
<el-date-picker clearable size="small" format="yyyy-MM-dd" value-format="yyyy-MM-dd" v-model="from.start_time"
type="date" placeholder="请选择开始日期" :picker-options="pickerStartOptions">
</el-date-picker>
</el-form-item>
<el-form-item size="small" label="结束日期:" prop="end_time">
<el-date-picker clearable size="small" format="yyyy-MM-dd" value-format="yyyy-MM-dd" v-model="from.end_time"
type="date" placeholder="请选择结束日期" :picker-options="pickerEndOptions">
</el-date-picker>
</el-form-item>
第二步:在data里绑定相应的数据 pickerStartOptions 、pickerEndOptions;
data(){
return {
// 表单绑定数据
form:{
start_time:'',// 开始日期
end_time:'',// 结束日期
},
// 关联两个日期选择器,按日期先后顺序的设置规则
// 选择的开始日期
pickerStartOptions: {
disabledDate: (time) => {
if (this.form.end_time) {
return time.getTime() > new Date(this.form.end_time + ' 23:59:59').getTime()
}
}
},
// 选择的结束日期
pickerEndOptions: {
disabledDate: (time) => {
if (this.form.start_time) {
return time.getTime() < new Date(this.form.start_time + ' 00:00:00').getTime()
}
}
}
}
}