• 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=" 100%;"
                                    ></el-date-picker>
                        </el-form-item>
                    </el-col>
                    <el-col class="line" style="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=" 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();
                  }
         }
       };
    }
    

      

  • 相关阅读:
    CMP指令(转)
    步进电机简介
    IDE改为AHCI后系统无法启动的解决办法
    无线网络(WLAN)常见加密方式介绍
    51单片机学习记录——数码管动态显示
    DEDECMS 调用上级栏目标题
    微信小程序开发系列(二)小程序的全局文件
    微信小程序开发系列(一)小程序开发初体验
    python+unittest日志和报告输出模块
    pip更换国内镜像源
  • 原文地址:https://www.cnblogs.com/karila/p/7783033.html
Copyright © 2020-2023  润新知