vue+elementUI封装的时间插件(有起始时间不能大于结束时间的验证)
vue+elementUI封装的时间插件(有起始时间不能大于结束时间的验证):
html:
<el-form-item label="活动时间" required>
<el-col :xs="24" :sm="11" :md="7" :lg="5" class="startTime">
<el-form-item prop="start_time">
<el-date-picker
type="datetime"
placeholder="起始时间"
v-model="activityInfo.start_time"
:picker-options="pickerBeginDateBefore"
style="width: 100%;"
></el-date-picker>
</el-form-item>
</el-col>
<el-col class="line" style="width:20px;text-align:center">至</el-col>
<el-col :xs="22" :sm="11" :md="7" :lg="5" class="endTime">
<el-form-item prop="end_time">
<el-date-picker
type="datetime"
placeholder="结束时间"
v-model="activityInfo.end_time"
:picker-options="pickerBeginDateAfter"
:disabled="activityInfo.is_long"
style="width: 100%;"
></el-date-picker>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="24" :md="8" :lg="5" class="longTime">
<el-form-item label-width="7px" prop="is_long">
<el-checkbox v-model="activityInfo.is_long" :true-label="1" :false-label="0">长期</el-checkbox>
</el-form-item>
</el-col>
</el-form-item>
js(在data的定义中):
pickerBeginDateBefore:{
disabledDate: (time) => {
let beginDateVal =new Date( this.activityInfo.end_time).getTime();
if (beginDateVal) {
return (time.getTime() > beginDateVal) ||(time.getTime() < Date.now() - 8.64e7);
}else{
return time.getTime() < Date.now() - 8.64e7
}
}
},
pickerBeginDateAfter:{
disabledDate: (time) => {
let beginDateVal = new Date(this.activityInfo.start_time).getTime();
if (beginDateVal) {
return time.getTime() < (beginDateVal-24*60*60*1000);
}
}
},
输入验证:
//在rules中:
start_time:[
{ required: true, message: '请选择起始时间', trigger: 'change' }
],
end_time:[
{ validator: checkEndTime, trigger: 'change' }
/* { required: true, message: '请选择结束时间', trigger: 'change' }*/
], //自定义的验证函数:
checkEndTime=function(rule, value, callback){
/*var isLongTime=$($(".longTime").find(".el-checkbox__input")[0]).hasClass("is-checked")
if(!value && !isLongTime) {
return callback(new Error('请选择结束时间'));
}*/
if(!activity_edit.activityInfo.is_long && !value){
return callback(new Error('请选择结束时间'));
}
callback();
};
值的类型转换(在watch中):
"activityInfo.start_time":{
handler: function (val, oldVal) {
var _this=this;
if(val){
_this.activityInfo.start_time=_this.getDayTime(_this.activityInfo.start_time,true);
}
},
deep: true
},
"activityInfo.end_time":{
handler: function (val, oldVal) {
var _this=this;
if(val){
_this.activityInfo.end_time=_this.getDayTime(_this.activityInfo.end_time,true);
}
},
deep: true
},
如果日期type="daterange",不可选择日期作如下处理
<el-date-picker v-model="value1" type="daterange"
:picker-options="pickerOptions">
</el-date-picker> data() {
return {
value: '',
pickerOptions2: {
disabledDate: (time) => {
return time.getTime() > new Date(2017, 11, 30) || time.getTime() < new Date(2017, 11, 11);//注意是||不是&&
}
}
};
} //如果是不能选择今日
data() {
return {
value: '',
pickerOptions2: {
disabledDate: (time) => {
return time.getTime() > new Date();
}
}
};
}
vue+elementUI封装的时间插件(有起始时间不能大于结束时间的验证)的更多相关文章
- element ui实现form验证起始时间不能大于结束时间
<el-form-item label="开始时间" :label-width="formLabelWidth" prop="startTime ...
- My97DatePicker日期控件,开始时间不能大于结束时间,结束时间不能小于开始时间
在只做项目的时候,需要用到一个日期控件,之前用到过my97,感觉挺好的,兼容性很强,配置也比较容易 当开始时间不能大于结束时间和结束时间不能小于开始时间,这个需要一个判定的,要不然不就乱套了 在my9 ...
- EXT5 时间框控制(开始时间不能大于结束时间)
1.网上看的大部分代码都是利用vtype : 'dateRange' EXT的这个属性,但是可能由于环境问题还是怎么样,我就是实现不了想要的效果. 然后研究了一下,在时间框的listeners 监听 ...
- layui时间控件联动:开始时间、结束时间,有效时间范围
实际开发中,经常遇到时间控件联动的情况,然后每次都网上搜代码Copy,不过每次都有点小Bug让你错不及防: 这次,在这里备份一下,以后Copy自己的得了(欢迎Copy代码,若遇到问题,请麻烦回复我一下 ...
- Java获取指定时间段的年份(开始、结束时间)、月份(开始、结束时间)、天数(开始、结束时间)
package test; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleD ...
- bootstrap 的 datetimepicker,同时有日期和时间, 且开始时间要早于结束时间
首先,引入jquery, bootstrap 和 bootstrap-datetimepicker datetimepicker的下载地址: http://www.bootcss.com/p/boot ...
- myDatePinker设置开始时间不能大于结束时间
操作时间起: <input type="text" name="startTime" id="startTime" style=& ...
- WdatePicker设置时间区间时,对开始时间和结束时间限制
<input id="startDate" name="startDate" type="text" readonly=" ...
- layer日期控件,开始时间不能大于结束时间
var start=laydate.render({ elem: '#beginTime', //指定元素 type: 'month', format:'yyyy-MM', done:function ...
随机推荐
- C# Winform软件多语言(汉语、英语。。。)界面的切换,低耦合
Winform软件多语言切换,个人见解,降低软件对语言展示的耦合度. 1.设计图(自己瞎画的呵呵) 2.做的小demo,界面如下 3.下面是代码展示部分 1)Form1代码展示 namespace W ...
- efcore 配置链接sqlserver
本文将在asp.net core api 项目中使用efcore corefirst模式 简单配置链接sqlserver数据库,以及简单的数据库迁移操作 一 新建项目 1. 首先我们先用vs2017 ...
- MySQL 5.7 解压版 安装教程(图文详细)[Windows]
最近在学习中用到了MySQL数据库,在安装过程中遇到了不少问题,在翻了大半天百度后,问题基本都解决了,所以写一篇MySQL 5.7 解压版的图文详细安装教程. 至于为什么我会选择解压版而不是安装版,一 ...
- Java finally关键字
关于finally语句块,有如下特点: 1.finally语句块可以直接和try语句块联用.try...finally... 2.try...catch...finally也可以 3.通常在final ...
- CSS3之 :nth-child(n)语法讲解
语法: E:nth-child(n){ sRules } * 匹配父元素索引为n的子元素E :nth-child(n) 让你匹配到父元素的任一子元素: Figure 1:<section id= ...
- freemarker生成word,表格分页
在做项目的过程中,使用到了freemarker生成word.又有一个需求,明细的要确定有多少页,这就用到了换页的xml标签了,找了我好久 <w:p ><w:r><w:br ...
- PAT 1034. Head of a Gang[bug]
有一个两分的case出现段错误,真是没救了,估计是要写bfs的形式,可能栈溢出了 #include <cstdio> #include <cstdlib> #include & ...
- Scrapy框架的使用 -- 自动跳转链接并请求
# -*- coding: utf-8 -*- import scrapy from movie.items import MovieItem class MoviespiderSpider(scra ...
- CSS总结摘要
一 概述 1.什么是CSS? Cascading Style Sheet,层叠样式表,用于设定页面内容的显示样式. 2.为一个元素添加多个样式 一个元素可以同时定义多个类,不同类之间用空格隔开,如cl ...
- 【活动】畅想云端加油站,赢iPad
中石化联手阿里云升级石油化工业务,已运行2月 中石化的“互联网+”战略正在不断深化.4月20日消息,中石化与阿里云共同宣布,双方将展开技术合作,借助阿里巴巴在云计算.大数据方面的技术优势,对部分传统石 ...