zoukankan      html  css  js  c++  java
  • DateTimePicker日期时间选择器中,只需要选择器,不需要输入框

    vue的element-ui中有个日期时间选择器,有个需求就是只需要使用选择器,而不需要输入框,也就是说选择时间的触发条件是别的事件,比如点击某个按钮。

    实现效果:

    组件默认样式:输入框和时间选择器是绑定的,当点击输入框时,才显示时间选择器。

     

    需求:当点击选项:自定义时间 时,显示出时间选择器,此时可以选择时间。

          

     实现代码:

    1.template:

    <!-- 时间选择器 -->
    <el-date-picker
      v-model="form.timeValueArr"
      type="datetimerange"
      range-separator="至"
      start-placeholder="开始日期"
      end-placeholder="结束日期"
      value-format="yyyy-MM-dd HH:mm:ss"
      ref="datePickerRef"
      v-show="false"
      @change="fnchooseCustomTime"
    >
    </el-date-picker>

    2.js:

    this.$refs.datePickerRef.$el.click(); // 手动控制日期时间选择器打开
    
    // 选择自定义时间范围
    fnchooseCustomTime(value) {
      this.form.timeValue = value.join(",");
      this.chooseTime();
    },
    

    实现原理:

    1.需要在HTML中添加一个日期时间选择器,但是设置为false,不显示。

    2.给它设置一个ref标识,在需要选择自定义时间时,直接通过this.$refs.datePickerRef找到该组件,然后$el表示组件元素,通过调用click点击事件控制选择器显示。

    3.给组件设置change方法,当选择完时间之后,可以获取到选择的时间,进行需要的操作。

    bug:

    上面处理出现的bug就是时间选择器会跑到页面左上角,因为时间选择器是相对选择框来定位的,当选择框设置隐藏时,时间选择器就会相对整个页面来定位了,elementui封装的就是如此,除非修改源码。

    所以还是需要让选择框显示,不能设置隐藏,但是可以通过设置层级间接实现。

    解决代码:

    1.template:

    <!-- 时间选择器 -->
    <el-date-picker
      v-model="form.timeValueArr"
      type="datetimerange"
      range-separator="至"
      start-placeholder="开始日期"
      end-placeholder="结束日期"
      value-format="yyyy-MM-dd HH:mm:ss"
      ref="datePickerRef"
      class="date_style"
      @change="fnchooseCustomTime"
    >
    </el-date-picker>

    2.js不变,同上。

    3.css:

    .date_style {
      margin-left: -100px;
       100px;
      z-index: -1;
    }

    注意:

    1.由于在element-UI中对组件进行了封装,所以将输入框和选择器绑定到了一起,只对外提供了一个标签来使用,所以我们这边很难做修改,需要改变源代码。但是可以采用巧妙的办法:比如通过手动的方法来控制组件实现效果。

    2.只要清楚了组件实现的原理,任何组件都可以实现所有想要的效果。

     

  • 相关阅读:
    响应式开发
    web作业小结
    js的简单数据类型和复杂数据类型
    JavaScript 字符串对象
    JavaScript 数组篇
    JavaScript 对象篇
    spfa优化
    HZNU Training 28 for Zhejiang Provincial Competition 2020
    [kuangbin带你飞]专题十一 网络流
    HZNU Training 26 for Zhejiang Provincial Competition 2020
  • 原文地址:https://www.cnblogs.com/5201314m/p/14025824.html
Copyright © 2011-2022 走看看