場景需求:開始日期不能小於今天,在今天以前的日期禁止選擇,結束日期不能小於開始日期,開始日期以前的日期禁止選擇。html
效果圖:element-ui
element-ui的時間選擇器中,有一個picker-options的屬性,屬性值中有個disabledDate能夠設置禁用狀態,類型爲函數,參數爲今天日期,經過返回Boolean值來肯定日期是否能夠選擇。函數
所以,開始日期能夠經過picker-options這個屬性去設置禁用選項:ui
setStartDate(){ let time = this.getDate()//把當天時間轉化爲yyyy-MM-dd格式的方法 let self = this let obj = Object.assign({},this.startDateLimit,{ disabledDate:function(date){ return self.getDate(date) < time } }) return obj },
...
當選擇完開始日期後,開始選擇結束日期了,這時能夠經過已經選擇的開始日期來設置結束日期的禁選項。this
在開始日期的選擇器上綁定change事件,開始日期發生改變就能夠馬上改變結束日期的禁選項。spa
changeEnd(){ //若是已經存在結束日期 if(this.form.endDate){ if(this.form.beginDate > this.form.endDate){ this.form.endDate = '' this.$message.warning('結束日期小於開始日期,請從新選擇') return ; } } //若是結束日期還沒有選擇 if(!this.form.beginDate){ this.$message.warning('請先選擇開始日期') this.endDateLimit = Object.assign({},this.endDateLimit,{ disabledDate:(date)=>{ return true } }) }else{ let self = this this.endDateLimit = Object.assign({},this.endDateLimit,{ disabledDate:(date)=>{ return self.getDate(date) < this.form.beginDate } }) } },
html代碼:3d
<el-date-picker size="mini" class="s-form" v-model="form.beginDate" type="date" @change="changeEnd" :picker-options="startDateLimit" clearable value-format="yyyy-MM-dd" placeholder="選擇開始日期"> </el-date-picker> - <el-date-picker v-model="form.endDate" class="s-form" :picker-options="endDateLimit" @focus="changeEnd" @change="setTime" type="date" clearable size="mini" value-format="yyyy-MM-dd" placeholder="選擇結束日期"> </el-date-picker>