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 ...
随机推荐
- 微软的TransactionScope类是个好玩意
最近发现微软自带的TransactionScope(.Net Framework 2之后)是个好东东,提供的功能也很强大. 首先说说TransactionScope是什么,并能为我们做什么事情.其实看 ...
- javaweb之jsp的属性范围
1.什么是jsp的属性范围? 所谓的属性范围就是一个属性设置之后,可以经过多少个其他页面后仍然可以保存并继续使用.jsp提供了四种属性范围,如下: 当前页,对应的jsp对象为pageContext,属 ...
- c语言结构体可以直接赋值
结构体直接赋值的实现 下面是一个实例: #include <stdio.h> struct Foo { char a; int b; double c; }foo1, foo2; //de ...
- 响应式(2)——bootstrap的响应式
<meta name="viewport" content="width=device-width,user-scalable=no"/> < ...
- 一个简单的JQuery自适应分页插件twbsPagination
下载地址:http://esimakin.github.io/twbs-pagination/ 1 解决totalPages不更新的问题 (先移除然后重新加入DOM树中)在使用twbsPaginati ...
- java.sql.SQLException: Incorrect string value: '\xF0\x9F\x9A\x80\xF0\x9F...' for column 'name' at row 1
1.异常提示: 12:59:10.000 [http-nio-8080-exec-40] DEBUG o.s.j.s.SQLStateSQLExceptionTranslator - Extracte ...
- Java基础_day01
一.JRE和JDK的安装, JRE —— Java 运行环境 Java runtime environment 包含Java虚拟机和Java程序的核心类库. ...
- for 循环的时候 append() 是移动不是复制
使用for 的时候,append() 不是复制,而是移动,只有最后一个元素才真正的append() 到了 解决办法: 1. 使用字符串: 2.使用clone();
- Html5中 视频 音频标签 进度条问题
最近项目中使用Html5的video和audio标签来在线播放视频和音频文件,但是遇到个奇葩的问题,页面上播放之后进度条无效, 查看w3c之后发现html代码并没有什么不同,之后猜想如果用静态的htm ...
- 创建第一个windows服务
windows服务应用程序是一种长期运行在操作系统后台的程序,它对于服务器环境特别适合,它没有用户界面,不会产生任何可视输出,任何用户输出都回被写进windows事件日志. 计算机启动时,服务会自动开 ...