vue+elementUI封装的时间插件(有起始时间不能大于结束时间的验证)

时间:2022-02-22 03:45:48

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日期控件&comma;开始时间不能大于结束时间&comma;结束时间不能小于开始时间

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

  3. EXT5 时间框控制&lpar;开始时间不能大于结束时间&rpar;

    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. iperf测试

    在服务端运行iperf,输入命令iperf –s –p 12345 –i 1 –M 以在本机端口12345上启用iperf 在客户端运行iperf,输入命令iperf –c server-ip –p  ...

  2. CSS Animatie是一款在线制作CSS3动画的工具,可以在线直接制作CSS3动画效果,生成代码

    CSS Animatie是一款在线制作CSS3动画的工具,可以在线直接制作CSS3动画效果,生成代码 CSS Animatie 彩蛋爆料直击现场 CSS Animatie是一款在线制作CSS3动画的工 ...

  3. php判断服务器是否支持Gzip压缩功能

    Gzip可以压缩网页大小从而达到加速打开网页的速度,目前主流的浏览器几乎都支持这个功能,但开启Gzip是需要服务器支持的,在这里我们简单的使用php来判断服务器是否支持Gzip功能. 新建一个php类 ...

  4. ubuntu14&period;04 下安装mysql5&period;6

    1.sudo apt-get install mysql-server-5.6 2.测试是否安装成功 ps aux |grep mysql mysql -u root -p 3.允许远程访问设置 su ...

  5. Windows 下安装RabbitMQ服务器及基本配置

    RabbitMQ是一个在AMQP协议标准基础上完整的,可复用的企业消息系统.它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rab ...

  6. 使用selenium操作ant design前端的页面,感觉页面没加载完

    因需要收集页面数据,遂准备使用selenium爬取瓦斯阅读页面, 瓦斯网站使用的是ant design,元素定位非常困难,页面元素都没有ID,现在还只是能做到操作登录,不能自动打开订阅,查询某公众号, ...

  7. SQL添加事务处理

    --modi by lmt declare @errorSum int --记录错误数 begin Create table #CheckreqAccState(CheckReqID varchar( ...

  8. 几种流行Webservice框架

    一. 几个比较流行的Webservice框架: Apache Axis1.Apache Axis2.Codehaus XFire.Apache CXF.Apache Wink.Jboss  RESTE ...

  9. Javascript日常编码中的一些常见问题

    一.尽量少用全局变量   这是一个疑问最少,同时流传最 广的一条.Javascript使用函数管理作用域,全局变量最大的问题在于同名变量冲突.这种隐患产生比较直接的两个原因就是Javascript语言 ...

  10. Spark机器学习&lpar;12&rpar;:神经网络算法

    1. 神经网络基础知识 1.1 神经元 神经网络(Neural Net)是由大量的处理单元相互连接形成的网络.神经元是神经网络的最小单元,神经网络由若干个神经元组成.一个神经元的结构如下: 上面的神经 ...