美文网首页
Vue+Element 日期选择器 选择范围限制

Vue+Element 日期选择器 选择范围限制

作者: 嗜梦lin | 来源:发表于2019-07-01 19:13 被阅读0次

    在业务中使用日期选择时,通常会遇到要限制日期范围的情况,这里就来看一下element的日期限制是如何实现的。(Element日期选择器:https://element.eleme.cn/#/zh-CN/component/date-picker

    在文档中我们可以找到可以通过设置 picker-options 属性来设置当前时间日期选择器特有的选项,该属性具体参数如下图:

    picker-option参数
    我们可以看出,可以通过设置 disabledDate 来禁用范围外的时间选项,就可以限制可选的范围了。而 disabledDate 是一个函数,返回boolean类型。
    接下来我们就写一个只能选择 今天之后(包括今天) 的日期选择器的场景。
    <template>
      <div class="wrapper">
        <el-form ref="form" :inline="true" :model="form" status-icon label-width="120px" class="form">
          <el-form-item label="今天之后的时间">
            <el-date-picker v-model="form.time" type="date" placeholder="选择日期" :picker-options="pickerOption"/>
          </el-form-item>
        </el-form>
      </div>
    </template>
    
    <script>
    export default {
      name: '',
      data() {
        return {
          form: {
            time: null,
          },
          // timePicker
          pickerOption: {
            disabledDate(time) {
              return time.getTime() < Date.now() - 8.64e7;
            },
          },
        };
      },
      computed: {},
      methods: {},
    };
    </script>
    
    <style lang="scss" scoped>
    </style>
    
    效果图

    现在是6月28日,那个 8.64e7 就是 24 * 60 * 60 * 1000,也就是一天的时间,上面如果想不包含今天,就把 -8.64e7去掉。
    这里建议把 pickerOption 写在计算属性中,因为在有些情况下需要通过其他的时间来定范围,所以写在computed中更好。

    最后再写一个常用的两个时间互相约束的例子,开始时间必须比结束时间小:

    <template>
      <el-form ref="form" :model="form" label-width="80px">
        <el-form-item label="开始时间">
          <el-date-picker v-model="form.startTime" type="date" placeholder="选择日期" :picker-options="startTimePicker"/>
        </el-form-item>
        <el-form-item label="结束时间">
          <el-date-picker v-model="form.endTime" type="date" placeholder="选择日期" :picker-options="endTimePicker"/>
        </el-form-item>
      </el-form>
    </template>
    
    <script>
    export default {
      name: '',
      data() {
        return {
          form: {
            startTime: null,
            endTime: null,
          },
        };
      },
      computed: {
        startTimePicker() {
          return {
            disabledDate: time => (this.form.endTime ? time.getTime() > new Date(this.form.endTime).getTime() : false),
          };
        },
        endTimePicker() {
          return {
            disabledDate: time => (this.form.startTime ? time.getTime() < new Date(this.form.startTime).getTime() : false),
          };
        },
      },
      methods: {},
    };
    </script>
    
    <style lang="scss" scoped>
    </style>
    
    效果图

    相关文章

      网友评论

          本文标题:Vue+Element 日期选择器 选择范围限制

          本文链接:https://www.haomeiwen.com/subject/cdfecctx.html