文章目錄
- 前言繡球
- html代碼
- 一、正確代碼
- 二、錯誤代碼
前言繡球
需求是這樣的,開始日期需要限制只能選擇今天的日期,結束日期只能選擇今天之后的日期。結束日期很常見,但是單純限制開始日期,還是蠻少見的,尤其是daterange模式的開始日期和結束日期用的同一個日期彈窗。本來是用change去做的清除,但只能清除一次,還不知道為啥,我把代碼貼上來,要是有知道的可以告訴我一下,我研究明白了也會再來記錄一下
html代碼
<el-date-pickerv-model="createtime"type="daterange"range-separator="至"start-placeholder="開始日期"end-placeholder="結束日期":picker-options="pickerOptions">
一、正確代碼
// startTimeFlag = false 這個就正常定義在data中就行啦
pickerOptions: {onPick: ({ maxDate, minDate }) => {if (!maxDate && !minDate) {this.startTimeFlag = false;} else if (minDate) {this.startTimeFlag = true;if (!this.isToday(new Date(minDate))) {// 如果選擇的開始時間不是今天,則不允許選擇this.startTimeFlag = false;this.$msg({ type: 'warning', message: '開始時間只能選擇當天日期!' });}}console.log(maxDate, minDate, this.startTimeFlag);},disabledDate: (time) => {if (!this.startTimeFlag) {return !this.isToday(time);}const yestoday = new Date();yestoday.setDate(yestoday.getDate() - 1);return time.getTime() < yestoday.getTime();},},
// 這個就是ai寫的判斷日期的方法,還蠻好用的。再一次感慨一句,任何工作都是想法最重要,創意最值錢呀
isToday(date) {const today = new Date();return (date.getFullYear() === today.getFullYear() &&date.getMonth() === today.getMonth() &&date.getDate() === today.getDate());},
二、錯誤代碼
dateChange(value, info, form) {if (info.CODE === 'createTime' && !this.isToday(new Date(form.startTime))) {// 如果選擇的開始時間不是今天,則清空時間this.$msg({ type: 'warning', message: '開始時間只能選擇當天日期!' });form.startTime = '';form.endTime = '';// 這里寫為null可以清除數據,寫為‘’則不行,也有可能是封裝問題導致form.createTime = null;}},