在项目中使用Element UI 日历控件,本人遇到的场景是某个时间到当天时间可选,其他不可选,代码如下:
dom:
<el-date-picker
v-model="ruleForm1.date"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择日期"
:picker-options="pickerOptions1" //这里设置时间段,动态获取
>
</el-date-picker>
下面用到计算属性,动态获取时间并刷新日历
computed: {
pickerOptions1() {
var _this=this;
return {
disabledDate(time) {
var time1 = _this.startTime;// 动态起始时间 ,这个时间是已经得到的时间戳
return time.getTime() > Date.now() || time.getTime() < time1;
}
}
}
},
也可以设置某个时间作为起始时间
data () {
return {
pickerOptions1: {
disabledDate(time) {
var date = new Date('2019-05-24 23:06:31');
var time1 = date.getTime();//得到时间戳
return time.getTime() > Date.now() || time.getTime() < time1;
},
},
}
}
还有其他场景,如当天时间的前三个月可选,其他不可选
data (){
return {
pickerOptions1: {
disabledDate(time) {
let curDate = (new Date()).getTime();
let three = 90 * 24 * 3600 * 1000;
let threeMonths = curDate - three;
return time.getTime() > Date.now() || time.getTime() < threeMonths;;
}
},
}
}
设置当天之后的时间可选
<el-date-picker
style="width:195px"
value-format="yyyy-MM-dd"
v-model="form.start_date"
type="date"
:picker-options="pickerOptions1"
placeholder="选择日期">
</el-date-picker>
...
data() {
return {
pickerOptions1: {
disabledDate(time) {
return time.getTime() < Date.now() - 8.64e7;//当天之后的时间可选
return time.getTime() > Date.now() - 8.64e7;//当天之前的时间可选
return time.getTime() > Date.now() ;//当天之前的时间可选---不包括当天
},
}
}
}
这种方式是实现了,但是这个方法不是很好;这个做法内部是循环遍历所有日期 性能很差。如果大家有什么好的方法欢迎评论哦!一起加油!