### Vue element 日期选择器 el-date-picker自定义可选范围
#### 需求:防止时间范围内的查询到数据过多,希望设置最大可选一周的是时间范围
#### 完成效果:见下图
![](https://box.kancloud.cn/7eec1bf2eb39b28a884b904f063b28db_657x339.jpeg)
> HTML页面
```
el-form-item label="订单时间">
<el-date-picker
v-model="formData.time"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
:picker-options="pickerOptions"
value-format="timestamp">
</el-date-picker>
</el-form-item>
```
#### 查看官方文档,disabledDate中,time.getTime() 的范围既是禁用的时间范围
> 此处为官方文档
```
pickerOptions: {
disabledDate(time) {
return time.getTime() > Date.now();
},
}
```
#### 知道了怎么禁用时间,想要达到预期的效果,要拿到第一次选择的日期
#### [](#查看element文档onpick可返回每次选中的时间)查看element文档,onPick可返回每次选中的时间
```
pickerOptions:{
disabledDate(time) { //..设置禁用状态,参数为当前日期,要求返回 Boolean
let timeOptionRange = vue.timeOptionRange;
let secondNum = 60*60*24*7*1000;
if(timeOptionRange){
return time.getTime() > timeOptionRange.getTime() + secondNum || time.getTime() < timeOptionRange.getTime() - secondNum ;
}
},
onPick(time){ //..选中日期后会执行的回调
if(time.minDate && !time.maxDate){ //..当第一时间选中才设置禁用
vue.timeOptionRange = time.minDate;
}
if(time.maxDate){
vue.timeOptionRange = null;
}
}
}
```
#### 此处有个知识点,在 onPick 和 disabledDate 直接用 this 拿到的是 el-date-picker 实例
#### 查了下资料,如下可获取组件的 vue 实例
```
data(){
var vue = this;
return {}
}
```
- 前言
- 写在前言
- 一些开发遇到的问题
- H5标签中的属性控制
- el-table的每个对象的属性值
- el-form多个表单同时验证必填项
- el-table 修改表头
- el-input的多种验证
- vue键盘回车事件
- blob导出
- table中selectable( 是否勾选)
- 手动更新视图
- 日期选择器,自定义可选范围
- select 自定义搜索
- 监听回车事件
- 表格初始化不可勾选
- el-input输入限制
- table时间格式转换
- table自适应高度
- JS问题记录
- js字符数组转换为数字数组
- js防抖和节流
- JS电脑是否有网判断
- JS属性记录
- 遍历方法(12个)
- 改变原数组(9个)
- 不改变原数组(8个)
- JS数组、字符串常用方法
- 遍历对象
- Vue
- vue-router
- vue-router 如何在新窗口打开页面
- vue-router 之 keep-alive缓存篇
- keep-alive项目案例
- 路由知识点归纳总结
- params、query传参
- vue问题记录
- vuejs npm chromedriver 报错
- vuex
- vuex个人理解
- Vuex的简单实例应用