Element用两个type="date"的DatePicker实现类似type="daterange"的功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Element用两个type="date"的DatePicker实现类似type="daterange"的功能相关的知识,希望对你有一定的参考价值。

GitHub地址:https://github.com/liuyongfa/DatePickerRange.git

Element当type="daterange"的时候,选择器是第一次点选开始时间,第二次点选结束时间,而不是第一个选择器是开始,第二个选择器是结束。第一次用很容易去在第一个时间选择器里试点一下,然后再去在这第一个里选开始时间,结果就选择了一个时间范围。其实知道了使用方法之后还好。但是很多人用户表示莫名其妙不会用。

然后可以用两个type="date"的DatePicker实现类似type="daterange"的功能。第一个点几次都是开始,第二个点几次都是结束。开始时间里超过结束时间的不能选,结束时间里比开始时间还古老不能选。

使用:

<template>
    <DatePickerRange :values="array" :inputWidth="150"/>
</template>

<script>
import DatePickerRange from ‘@/components/DatePickerRange.vue‘
export default {
    components: {
        DatePickerRange
    },
    data() {
        return {
            array:[]
        }
    }
}
</script>

代码:

<template>
  <div style="display: inline-block">
    <el-date-picker
      :style="{width: inputWidth + ‘px‘}"
      v-model="values[0]"
      align="right"
      type="date"
      placeholder="选择日期1"
      value-format="yyyy-MM-dd"
      :picker-options="pickerOptions1"
    ></el-date-picker>
    <span style="padding: 0 3px; color: #999999">-</span>
    <el-date-picker
      :style="{width: inputWidth + ‘px‘}"
      v-model="values[1]"
      align="right"
      type="date"
      placeholder="选择日期2"
      value-format="yyyy-MM-dd"
      :picker-options="pickerOptions2"
    ></el-date-picker>
  </div>
</template>

<script>
export default {
  props: {
    values: {
      type: Array,
      default: []
    },
    inputWidth: {
      type: Number,
      default: 200
    }
  },
  data() {
    return {
      gmtString: " GMT+0800",
      pickerOptions1: {
        disabledDate: date => {
          // 因为value-format= "yyyy-MM-dd",要和date比较就要转换,转换之后是UTC时间,而date是本地时区的时间
          // 如果没有设置alue-format= "yyyy-MM-dd",则可以直接比较:return this.values[1] ? date > this.values[1]: false;
          return this.values[1]
            ? date > new Date(this.values[1] + this.gmtString)
            : false;
        }
      },
      pickerOptions2: {
        disabledDate: date => {
          return this.values[0]
            ? date < new Date(this.values[0] + this.gmtString)
            : false;
        }
      }
    };
  },
  created() {
    let gmt = new Date().getTimezoneOffset() / 60;
    this.gmtString = gmt <= 0 ? " GMT+" + -gmt : " GMT-" + gmt;
  },
};
</script>

 

以上是关于Element用两个type="date"的DatePicker实现类似type="daterange"的功能的主要内容,如果未能解决你的问题,请参考以下文章

如何隐藏输入[type =“date”]鼠标悬停的两个箭头?

javascript怎么操作type=date的input,使得input显示的内容是我设定的时间。

elementui日期选择器只选择月份后如何监听

Element-ui 时间选择器 控制3个月3年等等不能选择案例

element随笔

element-ui的el-date-picker组件(限制时间范围选择)