vue中el-date-picker限制選擇7天內&禁止內框選擇
需求:elementPlus時間段選擇框需要滿足:①最多選7天時間。②不能手動輸入。
<el-date-picker
v-model="timeArrange"
@focus="timeEditable"
:editable="false"
type="datetimerange"
range-separator="至" start-placeholder="開始日期"
value-format="YYYY-MM-DD HH:mm:ss"
:disabled-date="disabledDateFn"
@calendar-Change="calendarChange"
end-placeholder="結束日期"
style="width: 100%"
/>①、限制最多選7天時間問題
加屬性 :disabled-date="disabledDateFn" 和 @calendar-Change="calendarChange"
const disabledDateFn = (time: any) => {
// 如何選擇了一個日期
if (choiceDate.value) {
// 7天的時間戳
const one = 6 * 24 * 3600 * 1000;
// 當前日期 - one = 7天之前
const minTime = choiceDate.value - one;
// 當前日期 + one = 7天之后
const maxTime = choiceDate.value + one;
return (
time.getTime() < minTime ||
time.getTime() > maxTime
// 限制不能選擇今天及以后
// || time.getTime() + 1 * 24 * 3600 * 1000 > Date.now()
);
} else {
// 如果沒有選擇日期,就要限制不能選擇今天及以后
// return time.getTime() + 1 * 24 * 3600 * 1000 > Date.now();
}
}
const calendarChange = (obj: any) => {
const minDate = obj[0]
const maxDate = obj[1]
// 把選擇的第一個日期賦值給一個變量。
choiceDate.value = minDate.getTime();
// 如何你選擇了兩個日期了,就把那個變量置空
if (maxDate) choiceDate.value = null;
}效果如下:

②限制手動輸入問題

這里有內外兩個輸入框需要限制
外部 的可以直接用屬性 :editable="false" 限制
內部 的這里需要通過 @focus="timeEditable" 把 input 內框輸入都變成只讀狀態(tài)。
//組件禁止組件里面的input輸入值
const timeEditable = ()=>{
nextTick(() => {
let els = document.querySelectorAll('.el-input__wrapper input');
for (var i = 0; i <= els.length - 1; i++) {
els[i].setAttribute('readonly', 'readonly');
}
})
}這樣需求就實現了

到此這篇關于vue中el-date-picker限制選擇7天內&禁止內框選擇的文章就介紹到這了,更多相關el-date-picker限制選擇7天內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Vue3如何理解ref toRef和toRefs的區(qū)別
本文主要介紹了Vue3如何理解ref toRef和toRefs的區(qū)別,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12
Vue2打包部署后可動態(tài)修改后端接口地址的解決方法
本篇文章將介紹使用Vue2開發(fā)前后端分離項目時,前端打包部署后可動態(tài)修改后端接口地址的解決方法,文中通過圖文結合的方式介紹的非常詳細,需要的朋友可以參考下2024-07-07

