当前位置: 首页 > article >正文

自定义 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)的方式处理。


http://www.kler.cn/news/160879.html

相关文章:

  • ajax+node.js+webpack+git前端过渡必学
  • 如何本地搭建Linux DataEase数据可视化分析工具并实现公网访问
  • Java 并发编程面试题——Java 线程间通信方式
  • Linux防火墙命令(关闭,启动,添加指定服务/端口)
  • antdesign前端一直加载不出来
  • 对嵌入式的学习向没什么头绪,有什么建议的吗?
  • 蓝桥杯-平方和(599)
  • 系统架构设计面试题
  • 封装校验规则(以及复选框和整体校验)-----Vue3+ts项目
  • 开源MES/免费MES/开源MES生产流程管理
  • 【面试经典150 | 二分查找】搜索二维矩阵
  • 合唱队形问题
  • python数据分析
  • C语言实现植物大战僵尸(完整版)
  • 剑指 Offer(第2版)面试题 19:正则表达式匹配
  • Linux中的日志管理
  • 【智能家居】三、添加语音识别模块的串口读取功能点
  • Java语言中的修饰符
  • 统计centos系统哪一个进程打开文件描述符
  • CSS 在性能优化方面的实践
  • 使用pytorch从零开始实现迷你GPT
  • R语言手册30分钟上手
  • Javase | 贪吃蛇小游戏
  • L1-025:正整数A+B
  • python筛选并删除两个文件夹中不同文件名的文件
  • 2-redis高级-centos上安装redis(编译安装、redis启动)、redis客户端操作、redis使用场景、redis中的通用命令
  • Google Guava 集合工具使用详解
  • Node.js快速搭建简单的HTTP服务器并发布公网远程访问
  • 多向通信----多人聊天
  • Elaticsearch 学习笔记