VUE-ElementUI 时间区间选择器的使用

目录
  • VUE-ElementUI 时间区间选择器
    • 一、单个输入框
    • 二、两个输入框
  • elementUI-日期选择器(两个框 限制选择范围、快捷键选择)
    • 两个日期框选择

VUE-ElementUI 时间区间选择器

官方文档中使用picker-options属性来限制可选择的日期

一、单个输入框

<el-date-picker
       v-model="value1"
       type="date"
       placeholder="选择日期"
       :picker-options="pickerOptions0">
</el-date-picker>

设置选择今天以及今天之后的日期

data (){
   return {
       pickerOptions0: {
          disabledDate(time) {
            return time.getTime() < Date.now() - 8.64e7;
          }
        },  
   }     
}

设置选择今天以及今天以前的日期

data (){
   return {
       pickerOptions0: {
          disabledDate(time) {
            return time.getTime() > Date.now() - 8.64e6
          }
        },  
   }     
} 

设置选择今天之后的日期(不能选择当天时间)

data (){
   return {
       pickerOptions0: {
          disabledDate(time) {
            return time.getTime() < Date.now();
          }
        },  
   }     
}  

设置选择今天之前的日期(不能选择当天)

data (){
   return {
       pickerOptions0: {
          disabledDate(time) {
            return time.getTime() > Date.now();
          }
        },  
   }     
}

设置选择三个月之前到今天的日期

data (){
   return {
       pickerOptions0: {
          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
       v-model="value1"
       type="date"
       placeholder="开始日期"
       :picker-options="pickerOptions0">
</el-date-picker>
<el-date-picker
       v-model="value2"
       type="date"
       placeholder="结束日期"
       :picker-options="pickerOptions1">
</el-date-picker>

限制结束日期不能大于开始日期

data(){
    return {
         pickerOptions0: {
                disabledDate: (time) => {
                    if (this.value2 != "") {
                        return time.getTime() > Date.now() || time.getTime() > this.value2;
                    } else {
                        return time.getTime() > Date.now();
                    }
 
                }
            },
            pickerOptions1: {
                disabledDate: (time) => {
                    return time.getTime() < this.value1 || time.getTime() > Date.now();
                }
            },
    }      
}       

elementUI-日期选择器(两个框 限制选择范围、快捷键选择)

	.el-input {
		width: 30%;
		margin-right: 20px;
	}
<div id="page">
	<!--下面的html定义标签部分写在这里-->
</div>
new Vue({
	el:'#page',//选择元素,通常都是id
	data: function() {
		return { //定义的变量
			value1: '',
			value2: '',
			//注意:-----下面的javascript部分的代码放在这里
		}
	},
})

两个日期框选择

1、快捷键选择

<el-date-picker v-model="value2" type="daterange" align="right" unlink-panels range-separator="至" start-placeholder="开始日期"
			 end-placeholder="结束日期" :picker-options="pickerOptions">
			</el-date-picker>
pickerOptions: {
		disabledDate(time) {
			return time.getTime() > Date.now();
		},
		shortcuts: [{
			text: '最近一周',
			onClick(picker) {
				const end = new Date();
				const start = new Date();
				start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
				picker.$emit('pick', [start, end]);
			}
		}, {
			text: '最近一个月',
			onClick(picker) {
				const end = new Date();
				const start = new Date();
				start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
				picker.$emit('pick', [start, end]);
			}
		}, {
			text: '最近三个月',
			onClick(picker) {
				const end = new Date();
				const start = new Date();
				start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
				picker.$emit('pick', [start, end]);
			}
		}]
	},

2、情景一

  • 结束日期不能大于开始日期,可以为今天
  • 注: 结束时间最大只能为今天,开始时间只能小于或等于结束时间,
  • 如果开始时间为今天,结束时间只能为今天

<div style="display: flex;">
				<el-date-picker v-model="value1" type="date" placeholder="开始日期" :picker-options="pickerOptions0">
				</el-date-picker>
				<el-date-picker v-model="value2" type="date" placeholder="结束日期" :picker-options="pickerOptions1">
				</el-date-picker>
			</div>
pickerOptions0: {
		disabledDate: (time) => {
			if (this.value2) {
				return time.getTime() > Date.now() || time.getTime() > this.value2;
			} else {
				return time.getTime() > Date.now();
			}
		}
	},
	pickerOptions1: {
		disabledDate: (time) => {
			return time.getTime() < this.value1 || time.getTime() > Date.now();
		}
	},

3、情景二

  • 结束日期不能大于开始日期,可以为今天
  • 先开始时间,判断为今天或以前,在结束时间,则结束时间大于等于开始时间
  • 先结束时间,判断为今天或以后,在开始时间,则开始时间小于等于结束时间

<el-date-picker v-model="value1" type="date" placeholder="开始日期" :picker-options="pickerOptions2">
			</el-date-picker>
			<el-date-picker v-model="value2" type="date" placeholder="结束日期" :picker-options="pickerOptions3">
			</el-date-picker>
pickerOptions2: {
	disabledDate: (time) => {
		if (this.value2) {
			return time.getTime() > this.value2
		} else {
			return time.getTime() > Date.now()
		}
	}
},
pickerOptions3: {
	disabledDate: (time) => {
		if (this.value2) {
			return time.getTime() < this.value1
		}
		return time.getTime() < Date.now() - 8.64e7
	}
},

4、情景三

限制结束日期不能小于开始日期

<el-date-picker v-model="value1" type="date" placeholder="开始日期" :picker-options="pickerOptions4">
			</el-date-picker>
			<el-date-picker v-model="value2" type="date" placeholder="结束日期" :picker-options="pickerOptions5">
			</el-date-picker>
pickerOptions4: {
	disabledDate: (time) => {
		if (this.value2 != "") {
			return time.getTime() > new Date(this.value2).getTime();
		}
	}
},
pickerOptions5: {
	disabledDate: (time) => {
		// - 1 * 24 * 60 * 60 * 1000//减去一天的时间代表可以选择同一天;
		return time.getTime() < new Date(this.value1).getTime();
	}
},

5、情景四

  • 限制选择开始时间不能小于当前时间(包含当前时间)。
  • 并且结束时间不能小于开始时间(比上面多了层限时)

<el-date-picker v-model="value1" type="date" placeholder="开始日期" :picker-options="pickerOptions6">
			</el-date-picker>
			<el-date-picker v-model="value2" type="date" placeholder="结束日期" :picker-options="pickerOptions7">
			</el-date-picker>
pickerOptions6: { //结束时间不能大于开始时间
	disabledDate: (time) => {
		if (this.value2) {
			return time.getTime() > new Date(this.value2).getTime();
		} else { //还没有选择结束时间的时候,让他只能选择今天之后的时间包括今天
			return time.getTime() < Date.now() - 8.64e7
		}

	}
},
pickerOptions7: {
	disabledDate: (time) => {
		if (this.value1) {
			// - 1 * 24 * 60 * 60 * 1000//可以选择同一天
			return time.getTime() < new Date(this.value1).getTime();
		} else { //还没有选择结束时间的时候,让他只能选择今天之后的时间包括今天
			return time.getTime() < Date.now() - 8.64e7
		}
	}
},

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • ElementUI日期选择器时间选择范围限制的实现

    目录 单个输入框的 情景1: 设置选择今天以及今天之后的日期 情景2: 设置选择今天以及今天以前的日期 情景3: 设置选择今天之后的日期(不能选择当天时间) 两个输入框 情景1: 限制结束日期不能大于开始日期 ElementUI是饿了么推出的一套基于vue2.x的一个ui框架.官方文档也很详细,这里做一个element-ui日期插件的补充. 官方文档中使用picker-options属性来限制可选择的日期,这里举例子稍做补充. 单个输入框的 组件代码: <el-date-picker v-mod

  • element-ui 时间选择器限制范围的实现(随动)

    需求: 选择日期范围,但是选择范围需要在一周以内.举个栗子:假设选第一个日期为1月17日,那么1月11日以前.1月23号以后的日期都需要设为禁选状态. 方法: 考虑到有两种设计方式: 1.用两个独立时间选择器控制,实现起来比较混乱. 2.用日期范围选择器. 第一种方式没有做demo,有特殊需求的小伙伴请留言.这里选择使用日期范围选择器,使用起来可以预见代码会清爽很多. 效果图: 代码: <el-date-picker v-model="datePick" type="d

  • 详解element-ui日期时间选择器的日期格式化问题

    最近在做vue+element-ui的后台管理页面,其中用到了DateTimePicker来选择日期时间,但是在将数据传回后台的过程中遇到了一些令人头疼的问题,在此记录一下解决方案,以免日后再次遇到. 前端页面 前端代码 submitForm(formName) { this.$refs[formName].validate((valid) => { let url = 'http://localhost:8088/pethospital/order-record' let data = qs.

  • Vue+ElementUI 中级联选择器Bug问题的解决

    最近在项目中需要用到级联这么个控件,所以便去element上找了个,发现了个问题,在这里跟大家分享下,介于公司项目的隐私性,所以一些文字便给大家打上马赛克了,敬请谅解~ 不多说废话,直接上问题: ElemenUI的级联是通过子级字段递归进行显示的,但是假如后端老铁也用了递归写的数据,而递归到最后一个数据集便出现了问题,会出现光有字段,但是却没有数据这么个情况在这里插入图片描述 这时候就出现了问题: 最后一级会多出来一个级联,这种体验便造成了很不好的感觉. 解决办法: 将获取这些级联的数据作为参数

  • VUE-ElementUI 时间区间选择器的使用

    目录 VUE-ElementUI 时间区间选择器 一.单个输入框 二.两个输入框 elementUI-日期选择器(两个框 限制选择范围.快捷键选择) 两个日期框选择 VUE-ElementUI 时间区间选择器 官方文档中使用picker-options属性来限制可选择的日期 一.单个输入框 <el-date-picker        v-model="value1"        type="date"        placeholder="选择

  • Vue日期时间选择器组件使用方法详解

    本文实例为大家分享了Vue日期时间选择器组件的具体代码,供大家参考,具体内容如下 1.效果图如下 单选日期选择器 多选日期选择器 日期时间选择器 2.准备 Date原型格式化工具方法 Date.prototype.format = function(fmt) { //author: meizz var o = { "M+": this.getMonth() + 1, //月份 "d+": this.getDate(), //日 "h+": thi

  • ElementUI时间选择器限制选择范围disabledData的使用

    关于结束时间不能大于开始时间的问题,在elementui里我们用官方提供的 disabledDate 选项来解决.HTML:给选择器加上:picker-options属性 //开始时间 <el-date-picker v-model="startDate"></el-date-picker> //截止时间 <el-date-picker v-model="endDate" :picker-options="endDateOpt

  • vue elementui 实现搜索栏公共组件封装的实例代码

    1.背景 vue后台管理系统,会有很多表格页面,表格上方会有一些搜索选项,表格直接使用el-table即可,而搜索栏区域每次写起来都很繁琐,而且多人开发情况下每个人写的样式都不相同,布局样式无法统一. 所以要考虑对搜索栏做一个封装,统一配置引用,提升开发维护效率和界面统一. 完成后的效果大概就是长这样: 2.分析 项目使用的是elementui框架,搜索栏这种表单提交,首先要使用el-form组件来封装,而复杂点就是表单项可能有很多种,例如input输入框.select选择框.日期时间选择框.日

  • element ui时间日期选择器el-date-picker报错Prop being mutated:"placement"解决方式

    目录 发现错误 解决 补充:el-date-picker 初始化报错 总结 发现错误 这两天在写新项目的时候,遇到了element ui 时间日期选择器一直报错 [Vue warn]: Avoid mutating a prop directly since the value will beoverwritten whenever the parent component re-renders.Instead, use a data or computed property based on

  • vue element-ui table表格滚动加载方法

    添加全局注册事件,用来监听滚动事件 window.Vue.directive('loadmore', { bind(el, binding) { const selectWrap = el.querySelector('.el-table__body-wrapper') selectWrap.addEventListener('scroll', function() { let sign = 100 const scrollDistance = this.scrollHeight - this.

  • vue+element-ui+ajax实现一个表格的实例

    实例如下: <!DOCTYPE html> <html> <head> <script src="js/jquery-3.2.1.js"></script> <script src="vue.js"></script> <!-- 引入样式 --> <link rel="stylesheet" href="https://unpkg.co

  • vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)

    我使用的是element-ui V2.2.3.代码如下,当我选择值得时候,el-select选择器无法显示选中的内容,但是能触发change方法,并且能输出选择的值. select.vue文件 <template> <div> <div class="row" v-for="RowItem in rows"> <div class="col" v-for="colItem in RowItem.

  • vue+elementUI实现表单和图片上传及验证功能示例

    本文实例讲述了vue+elementUI实现表单和图片上传及验证功能.分享给大家供大家参考,具体如下: 最终实现需求如下图: form表单内容与重点人员图片同时上传且图片为必填项 分析弹框页需要解决的问题有: 1.表单内容的验证及必填项 2.新增和编辑用同一个组件如何处理数据 3.图片需要和信息一起传递(即不允许自动上传) 4.图片必填的验证问题 针对上述问题作出方案: 1.el-form的表单验证需要注意几个地方: a:el-form-item的prop值需要和表单标签的v-model值保持一

随机推荐