vue el-date-picker动态限制时间范围案例详解

 更新时间:2021年09月09日 09:40:09   作者:CC#  
这篇文章主要介绍了vue el-date-picker动态限制时间范围案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

分为两种情况

1.开始时间和结束时间同一个框(限制只能本月)

2.开始时间和结束时间分开两个框(限制开始时间不能早于当前时间且结束时间不超过开始时间一星期)

 情况1

//情况1 原创版权声明:本文为weixin_40998880原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
//本文链接:https://blog.csdn.net/weixin_40998880/article/details/106272897
 
//html
<el-date-picker
   v-model="time"
   type="datetimerange"
   @change="datePickerChange"
   :picker-options="pickerOptions"
   range-separator="-"
   start-placeholder="开始日期"
   end-placeholder="结束日期"
   align="right"
   style="width:100%;"
   value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd HH:mm:ss"
   :default-time="['00:00:00','23:59:59']">
</el-date-picker>
 
 
//script
 
data(){
  return {
     selectData: '',
     pickerOptions: {
      // 点击时,选择的是开始时间,也就是minDate
      onPick: ({ maxDate, minDate }) => {
         this.selectData = minDate.getTime()
         if (maxDate) {
           // 解除限制
           this.selectData = ''
         }
      },
      disabledDate: (time) => {
          // 是否限制的判断条件
          if (!this.isNull(this.selectData)) {
            var date = new Date(this.selectData)
            // 这里就是限制的条件,这里为大于或者小于本月的日期被禁用(尽量不使用这种方法,因为其他年份的本月也能进行选择,具体限制日期参考情况2)
            return date.getMonth() > new Date(time).getMonth() || date.getMonth() < new Date(time).getMonth()
          } else {
            return false
          }
        }
     }
  }
},
methods:{
  // 检查是否为空
  isNull(value) {
    if (value) {
      return false
    }
    return true
  }
}
 

情况2

//情况2
//html
    <el-col :span="8">
                <el-form-item prop="beginTime" label="预约开始时间:">
                  <el-date-picker
                    v-model="editForm.beginTime"
                    type="datetime"
                    placeholder="选择开始时间"
                    :picker-options="pickerOptions[0]"
                    value-format="yyyy-MM-dd HH:mm:ss"
                    :default-time="defaultTime[0]"
                  >
                  </el-date-picker> </el-form-item
              ></el-col>
              <el-col :span="8"
                ><el-form-item prop="endTime" label="预约结束时间:">
                  <el-date-picker
                    v-model="editForm.endTime"
                    type="datetime"
                    placeholder="选择开始时间"
                    :picker-options="pickerOptions[1]"
                    value-format="yyyy-MM-dd HH:mm:ss"
                    :default-time="defaultTime[1]"
                  >
                  </el-date-picker> </el-form-item
              ></el-col>
              
              
 //script
    data(){
  return {
     selectData: '',
     defaultTime: [],
     pickerOptions: [
        {
          disabledDate: time => {
            const curDate = new Date().getTime();
            const day = 14 * 24 * 3600 * 1000;
            const dateRegion = curDate + day;
            return (
              time.getTime() < Date.now() - 8.64e7 ||
              time.getTime() > dateRegion
            );
          }
        },
        {
          //限制结束时间为开始时间的一周后
          disabledDate: time => {
            // 是否限制的判断条件
            const date = new Date(this.editForm.beginTime);
            if (!this.isNull(date)) {
              const day = 7 * 24 * 3600 * 1000;
              const dateRegion = date.getTime() + day;
              return (
                //禁用小于开始时间和大与开始时间一周后的日期
                new Date(time).getTime() > dateRegion ||
                new Date(time).getTime() < date.getTime()
              );
            } else {
              return false;
            }
          }
        }
      ],
  }
},
methods:{
  // 检查是否为空
  isNull(value) {
    if (value) {
      return false
    }
    return true
  },
  //获得当前时间并添加选中时的默认值
  getNowTime() {
      let d = new Date();
      let year, month, day, hour, minute;
      //当前时间的十分钟后
      d.setTime(d.getTime() + 10 * 60 * 1000);
      [year, month, day, hour, minute] = [
        d.getFullYear(),
        d.getMonth(),
        d.getDate(),
        d.getHours(),
        d.getMinutes()
      ];
      let hour2 = hour + 1;
      //选中开始时间时的默认值为当前时间的十分钟后
      //选中结束时间时的默认值为当前时间的一个小时十分钟后
      this.defaultTime = [
        hour + ":" + minute + ":00",
        hour2 + ":" + minute + ":00"
      ];
    },
}

到此这篇关于vue el-date-picker动态限制时间范围案例详解的文章就介绍到这了,更多相关vue el-date-picker动态限制时间范围内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue中的循环遍历对象、数组和字符串

    vue中的循环遍历对象、数组和字符串

    这篇文章主要介绍了vue中的循环遍历对象、数组和字符串,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • Vue3路由配置createRouter、createWebHistory、useRouter和useRoute详解

    Vue3路由配置createRouter、createWebHistory、useRouter和useRoute详解

    Vue3和Vue2基本差不多,只不过需要将createRouter、createWebHistory从vue-router中引入,再进行使用,下面这篇文章主要给大家介绍了关于Vue3路由配置createRouter、createWebHistory、useRouter和useRoute的相关资料,需要的朋友可以参考下
    2023-02-02
  • vue-element的select下拉框赋值实例

    vue-element的select下拉框赋值实例

    这篇文章主要介绍了vue-element的select下拉框赋值实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • vue项目中vant tab改变标签颜色方式

    vue项目中vant tab改变标签颜色方式

    这篇文章主要介绍了vue项目中vant tab改变标签颜色方式,具有很好的参考价值,希望对大家有所帮助。
    2022-04-04
  • 利用vscode编写vue的简单配置详解

    利用vscode编写vue的简单配置详解

    这篇文章主要给大家介绍了利用vscode编写vue简单配置的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来学习学习吧。
    2017-06-06
  • 解决Vue+Element ui开发中碰到的IE问题

    解决Vue+Element ui开发中碰到的IE问题

    今天小编就为大家分享一篇解决Vue+Element ui开发中碰到的IE问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • vue 实现setInterval 创建和销毁实例

    vue 实现setInterval 创建和销毁实例

    这篇文章主要介绍了vue 实现setInterval 创建和销毁实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • vue监听页面滚动到某个高度触发事件流程

    vue监听页面滚动到某个高度触发事件流程

    这篇文章主要介绍了vue监听页面滚动到某个高度触发事件流程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • 如何在 Vue 中使用 JSX

    如何在 Vue 中使用 JSX

    这篇文章主要介绍了如何在 Vue 中使用 JSX,帮助大家更好的理解和使用vue,感兴趣的朋友可以了解下
    2021-02-02
  • VUE.js实现动态设置输入框disabled属性

    VUE.js实现动态设置输入框disabled属性

    今天小编就为大家分享一篇VUE.js实现动态设置输入框disabled属性,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10

最新评论