element ui 日期禁用问题

需要用element ui的日期选择器组件实现日期选择限制
1.只能选择本年范围内时间
2.结束时间大于开始时间
3.结束时间的后一天不能为29,30,31号(以确保下一个时段开始时间不为月末)

  1. html部分
              <el-date-picker
                class="datepicker"
                v-model="oneStart"
                type="date"
                placeholder="选择日期"
				:picker-options="pickerOptionsOneStart"
                :clearable=false
                format="yyyy-MM-dd"
                >
              </el-date-picker>
            </el-form-item>
              <el-date-picker
                class="datepicker"
                v-model="oneEnd"
                type="date"
                placeholder="选择日期"
                :picker-options="pickerOptionsOneEnd"
                :clearable=false
                format="yyyy-MM-dd"
                >
			</el-date-picker>
          </el-form-item>
  1. js中data(){ return{}}部分
		data() {
			return {
			oneStart:'',
			oneEnd:'',
			dateDisabled:[],
			
			pickerOptionsOneStart: {//结束时间不能大于开始时间
				disabledDate: (time) => {
				var time=new Date(time);
				var year=new Date().getFullYear();
					if(this.oneEnd != ""){
						let minDate =new Date(year,0,1).getTime();
						let maxDate =new Date(new Date(this.oneEnd)-24*60*60*1000).getTime();
						return time.getTime() < minDate||time.getTime() > maxDate||this.dateDisabled.indexOf(time.getTime())!=-1;//如果日期在禁用数组里则禁止选择
					}else{
						let minDate =new Date(year,0,1).getTime();
						let maxDate =new Date(year,11,31 ).getTime();
						return time.getTime() < minDate||time.getTime() > maxDate||this.dateDisabled.indexOf(time.getTime())!=-1;
					}
				}
			},
			pickerOptionsOneEnd: {//结束时间不能大于开始时间
				disabledDate: (time) => {
				var time=new Date(time);
				var year=new Date().getFullYear();
					if (this.oneStart != "") {
						let minDate =new Date(this.oneStart).getTime();
						let maxDate =new Date(year,11,31 ).getTime();
						return time.getTime() < minDate||time.getTime() > maxDate||this.dateDisabled.indexOf(time.getTime())!=-1;
					}else{
					let minDate =new Date(year,0,1).getTime();
					let maxDate =new Date(year,11,31 ).getTime();
					return time.getTime() < minDate||time.getTime() > maxDate||this.dateDisabled.indexOf(time.getTime())!=-1;
					}
				}},
			}

		},
  1. 写一个获取每月最后几天的方法,由于2月月末可能为28号,所以要进行一下判断
methods: {
			//获取禁用的日期
			getdateDisabled(){
				var year=new Date().getFullYear();
				var days=[];
				for(var month = 0; month < 12; month++){
				let day= new Date(year, month + 1, 0).getDate();//获取每月天数
				days.push(day);
				}
				for(var i = 0; i < days.length; i++){
				if (days[i]>28){
					for (var j = 28; j < days[i]; j++){
					this.dateDisabled.push(new Date(year,i,j ).getTime())
					}
				}
				}
			},
		},
  1. 设置页面加载即调用getdateDisabled函数,获取禁用的日期数组
		mounted() {
			this.getdateDisabled();
		}

本人菜鸟一枚,这个方法比较麻烦,但是能用,如果有什么别的好的方法请告诉我,大家一起交流 ^ _ ^

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值