在项目中使用Element UI 日历控件,本人遇到的场景是某个时间到当天时间可选,其他不可选,代码如下:
dom:

 <el-date-picker
      v-model="ruleForm1.date"
      type="date"
      value-format="yyyy-MM-dd"
      placeholder="选择日期"
      :picker-options="pickerOptions1"    //这里设置时间段,动态获取
      >
 </el-date-picker>

下面用到计算属性,动态获取时间并刷新日历

computed: {  
    pickerOptions1() {
       var _this=this;
       return {
         disabledDate(time) {
           var time1 = _this.startTime;// 动态起始时间 ,这个时间是已经得到的时间戳
           return time.getTime() > Date.now() || time.getTime() < time1;
         }
       }
     }
  },
  也可以设置某个时间作为起始时间
	data () {
	    return {
	    	pickerOptions1: {
	     		disabledDate(time) {
			        var date = new Date('2019-05-24 23:06:31');         
			        var time1 = date.getTime();//得到时间戳
	                return time.getTime() > Date.now() || time.getTime() < time1;
	        	 },
	        }, 
	     }
	 }

还有其他场景,如当天时间的前三个月可选,其他不可选

data (){
   return {
       pickerOptions1: {
          disabledDate(time) {
            let curDate = (new Date()).getTime();
            let three = 90 * 24 * 3600 * 1000;
            let threeMonths = curDate - three;
            return time.getTime() > Date.now() || time.getTime() < threeMonths;;
          }
        },  
   }     
} 

设置当天之后的时间可选

  <el-date-picker
          style="width:195px"
          value-format="yyyy-MM-dd"
          v-model="form.start_date"
          type="date"
          :picker-options="pickerOptions1"
          placeholder="选择日期">
        </el-date-picker>
...

    data() {
      return {
        pickerOptions1: {
         disabledDate(time) {
            return time.getTime() < Date.now() - 8.64e7;//当天之后的时间可选
            return time.getTime() > Date.now() - 8.64e7;//当天之前的时间可选
            return time.getTime() > Date.now() ;//当天之前的时间可选---不包括当天
          },
        }       
      }
    }

这种方式是实现了,但是这个方法不是很好;这个做法内部是循环遍历所有日期 性能很差。如果大家有什么好的方法欢迎评论哦!一起加油!

GitHub 加速计划 / eleme / element
54.06 K
14.63 K
下载
A Vue.js 2.0 UI Toolkit for Web
最近提交(Master分支:3 个月前 )
c345bb45 7 个月前
a07f3a59 * Update transition.md * Update table.md * Update transition.md * Update table.md * Update transition.md * Update table.md * Update table.md * Update transition.md * Update popover.md 7 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐