自定义 element DatePicker组件指令 使选择器呈现为只读状态,用户无法直接编辑,但可以查看和选择日期

1.问题

现实中遇到列表的搜索条件使用DatePicker 组件进行开始结束时间筛选,但是手动修改input中的值,导致请求参数异常。比如讲clearable设置为false之后还是能手动清空输入框中的值。虽然组件提供了readonly 属性,但是也会让日期选择也无法使用。

2.思路

那我们先看看这个组件的结构

我们可以看到这里是有一个input输入框 和一个日期选择的popper组成,所以我们要想让键盘不直接修改日期包括删除和编辑 ,我们只需要设置input的readonly属性即可。

3.实现

这里我想到两个实现方式。

1.第一个是在页面的mounted方法中操控dom修改

let domArr = document.getElementsByClassName('el-date-editor');
for(let i = 0;i<domArr.length;i++){ 
   domArr[i].getElementsByTagName('input')[0].setAttribute('readonly',"readonly")
}
需要注意 这里的domArr 是一个类数组,它没有 forEach方法,只能用 for来循环。

2.如果使用的比较普遍和通用,那可以用指令来完成设置

在main.js 文件中定义一个全局指令

Vue.directive('elDatePickerReadonly', {
  // 当被绑定的元素插入到 DOM 中时……
  inserted: function (el) {
    el.getElementsByTagName('input')[0].setAttribute('readonly',"readonly")
  }
})
<el-date-picker
      v-elDatePickerReadonly
      v-model="value1"
      type="date"
      placeholder="选择日期"
      format="yyyy 年 MM 月 dd 日">
</el-date-picker>

4.总结

遇到问题不要慌,先看文档,文档解决不了的,就先分析分析问题,然后看看组件的构成,然后用最原始的方式(操作dom)的方式处理。

相关推荐

  1. 基于uniapp uniform 得定义picker 选择

    2023-12-07 22:56:04       28 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-07 22:56:04       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-07 22:56:04       20 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-07 22:56:04       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-07 22:56:04       20 阅读

热门阅读

  1. Leetcode 538 把二叉搜索树转换为累加树

    2023-12-07 22:56:04       41 阅读
  2. Vs创建空白Qt项目

    2023-12-07 22:56:04       27 阅读
  3. 《C++新经典设计模式》之附录A 类和对象

    2023-12-07 22:56:04       27 阅读
  4. Spring JdbcTemplate

    2023-12-07 22:56:04       28 阅读
  5. 30+程序员应该如何养生+养身体

    2023-12-07 22:56:04       38 阅读
  6. 【Erlang进阶学习】3、列表推导

    2023-12-07 22:56:04       40 阅读
  7. AIGC: 关于ChatGPT中的API调用模型

    2023-12-07 22:56:04       30 阅读
  8. arm linux 平台 打开摄像头矫正

    2023-12-07 22:56:04       37 阅读
  9. openGL 三:矩阵和向量

    2023-12-07 22:56:04       33 阅读
  10. C++标准库+Windows API+UBUNTU API

    2023-12-07 22:56:04       36 阅读