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封装的时间插件(有起始时间不能大于结束时间的验证)的更多相关文章

  1. element ui实现form验证起始时间不能大于结束时间

    <el-form-item label="开始时间" :label-width="formLabelWidth" prop="startTime ...

  2. My97DatePicker日期控件,开始时间不能大于结束时间,结束时间不能小于开始时间

    在只做项目的时候,需要用到一个日期控件,之前用到过my97,感觉挺好的,兼容性很强,配置也比较容易 当开始时间不能大于结束时间和结束时间不能小于开始时间,这个需要一个判定的,要不然不就乱套了 在my9 ...

  3. EXT5 时间框控制(开始时间不能大于结束时间)

    1.网上看的大部分代码都是利用vtype : 'dateRange'  EXT的这个属性,但是可能由于环境问题还是怎么样,我就是实现不了想要的效果. 然后研究了一下,在时间框的listeners 监听 ...

  4. layui时间控件联动:开始时间、结束时间,有效时间范围

    实际开发中,经常遇到时间控件联动的情况,然后每次都网上搜代码Copy,不过每次都有点小Bug让你错不及防: 这次,在这里备份一下,以后Copy自己的得了(欢迎Copy代码,若遇到问题,请麻烦回复我一下 ...

  5. Java获取指定时间段的年份(开始、结束时间)、月份(开始、结束时间)、天数(开始、结束时间)

    package test; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleD ...

  6. bootstrap 的 datetimepicker,同时有日期和时间, 且开始时间要早于结束时间

    首先,引入jquery, bootstrap 和 bootstrap-datetimepicker datetimepicker的下载地址: http://www.bootcss.com/p/boot ...

  7. myDatePinker设置开始时间不能大于结束时间

     操作时间起:  <input type="text" name="startTime" id="startTime" style=& ...

  8. WdatePicker设置时间区间时,对开始时间和结束时间限制

    <input id="startDate" name="startDate"  type="text" readonly=" ...

  9. layer日期控件,开始时间不能大于结束时间

    var start=laydate.render({ elem: '#beginTime', //指定元素 type: 'month', format:'yyyy-MM', done:function ...

随机推荐

  1. Java-----思想认识

    1.1 Java封装性思想的初步理解 从项目需求的角度出发,建立各个模块化的类,各个模块暂时不需要具体的方法描述,只需要各个模块的理想到位. 以银行项目为例.初步设想需要三个模块:银行(Bank类). ...

  2. Javascript获取页面表格中的数据

    var main=mygrid.gettable("11"); //表示获取非固定列的表格 var main1=mygrid.gettable("01");// ...

  3. AndroidVideoCache 框架源码分析

    1.简析: 在客户端播放视频的使用,容易出现这样的一个问题.在网络状况不好的情况下,视频流很容易卡顿或者中断,即使播放软件本身有一点的缓存能力,但是这个往往不够,造成播放失败,卡顿. AndroidV ...

  4. JBPM学习第6篇:通过Git导入项目

    1.登记到工作台 切换到目录: $SERVER_HOME/bin/ for Unix environment: ./standalone.shfor Windows environment: ./st ...

  5. thinkphp多表联合查询

    1.两个表查询 $userid=session('user.id'); $user = M('cuser'); $data = $user->field('projectno')->whe ...

  6. react-native一些好的组件

    一.移动端路由 react-navigator 二.移动端本地储存 react-native-storage(https://github.com/sunnylqm/react-native-stor ...

  7. Scarpy+selenium 结合使用

    首先要先在spider对象实例化时,同时实例化一个浏览器对象 # -*- coding: utf-8 -*- import scrapy from selenium import webdriver ...

  8. 【Android】13.0 UI开发(四)——列表控件RecyclerView的横向布局排列实现

    1.0 新建项目,由于ListView的局限性,RecyclerView是一种很好取代ListView的控件,可以灵活实现多种布局. 2.0 新建项目RecyclerviewTest,目录如下: 3. ...

  9. (转)快速了解微信小程序的使用,一个根据小程序的框架开发的todos app

    微信官方已经开放微信小程序的官方文档和开发者工具.前两天都是在看相关的新闻来了解小程序该如何开发,这两天官方的文档出来之后,赶紧翻看了几眼,重点了解了一下文档中框架与组件这两个部分,然后根据简易教程, ...

  10. wampserver 点击跳转localhost变0.0.0.0的解决方法!

    最近下载新版本wampserver发现点击项目不会自动添加localhost了,导致访问项目很麻烦. 修改如下 修改wamp根目录下的wampmanager.conf urlAddLocalhost ...