vue+element設置選擇日期最大范圍(優秀版)


element的選擇日期組件里沒有像移動端vant直接設置max-date的api,因此在不能動態設置選擇的第二個時間(需要分別選擇起止時間和結束時間,但可以加上關聯),

看了很多博客有的效果直接出不來,有的代碼格式看不懂要不就是不完全符合自己的需求,自己摸索看前人可取的方法終於實現了(幫后台寫的,等寫完后台需求已經不需要了,記錄下筆記,例子范圍是7天)

效果:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
</head>
<body>
  <div id="app">
    <el-date-picker
       v-model="value1"
       type="date"
       placeholder="開始日期"
       value-format="timestamp"
       :picker-options="pickerOptions0">
    </el-date-picker>
    <el-date-picker
       v-model="value2"
       type="date"
       placeholder="結束日期"
       value-format="timestamp"
       :picker-options="pickerOptions1">
    </el-date-picker>
  </div>
</body>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<script>
new Vue({
    el: '#app',
    data(){
      return { 
        value1:'',
        value2:'',
        maxLength:7,         //設置兩個日期的最大間隔
        pickerOptions0: {
          disabledDate:(time)=>{
            if(this.value2!=''){
              //console.log(this.value2)     //清除結束日期時this.value2的值為null
              if(this.value2===null){
                return time.getTime() < Date.now();
              }else{
                let lastTime = this.value2-this.maxLength*24*3600*1000 + 8.64e7
                return time.getTime() > this.value2 || time.getTime() < lastTime
              }
            }else{
              return time.getTime() < Date.now();                   //將比當前時間還早的時間不可選
            }
          }
        },
        pickerOptions1: {
          disabledDate:(time)=>{
            if(this.value1!=''){
              let nextTime = this.value1+this.maxLength*24*3600*1000 - 8.64e7
              return time.getTime() < this.value1||time.getTime() > nextTime;
            }else{
              return time.getTime() < Date.now()
            }
          }
        },
      }
    },
})
</script>
</html>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM