美文网首页
div添加blur事件

div添加blur事件

作者: 别吵让我睡觉 | 来源:发表于2021-02-01 01:04 被阅读0次

问题所在

遇到一个需求,要给一个div添加blur事件,具体情况是:el-seclect不满足项目下拉列表的需求,找了一些插件,也没发现比较好用的,所以就决定自己用div实现效果,也就遇到了当鼠标点击其他空白处时,div要隐藏起来的问题

尝试过程

刚开始毫无思路,查了查资料,发现还真的可以
1. 直接给divblur事件

<div class="box" id="box" @blur="onblur"></div>

不生效,然后发现是div不能直接加blur事件

2.用tabindex
差不多就是这种:https://blog.csdn.net/u013112461/article/details/90747257,效果很奇怪,不符合需求

解决方法

最后想到了,用vue去监听所有的点击事件,从里面筛选出来这个div,除了点击这个div,其他地方全部隐藏

错误写法:

<el-form-item label="样例" prop="test">
     <div class="box" v-show="typePanelFlag" ref="boxRef"></div>
</el-form-item>

document.addEventListener('click', (e) => {
         let typePanel = this.$refs.boxRef.contains(e.target);
         if(typePanel){
           if (!typePanel.contains(e.target)){
             this.typePanelFlag = false;
            }
          }
       })

这个想法没问题,但是运行之后,控制台报错
Uncaught TypeError: this.$refs.boxRef.contains is not a function at HTMLDocument.eval,就很烦,然后查了好久,终于找到一篇相关博客,原因就是用js原生获取dom的方法代替ref方式

修改之后:

<el-form-item label="样例" prop="test" id = "formItem">
      <div class="box" v-show="typePanelFlag" ref="boxRef"></div>
</el-form-item>

document.addEventListener('click', (e) => {
            let typePanel = document.getElementById("formItem");
            if(typePanel){
              if (!typePanel.contains(e.target)){
                this.typePanelFlag = false;
              }
            }
          })

到这里就成功的实现了divblur效果,学废了学废了!
贴上大佬博客:https://www.freesion.com/article/33241074504/

相关文章

  • div添加blur事件

    问题所在 遇到一个需求,要给一个div添加blur事件,具体情况是:el-seclect不满足项目下拉列表的需求,...

  • div focus blur事件

    开发过程中经常会遇到上图中的需求。点击div显示删除按钮,当点击其他地方时删除按钮隐藏。基本上都能想到利用focu...

  • Jquery 事件

    bind()向元素添加事件处理程序 blur()添加、触发失去焦点事件 change()添加、触发事件 click...

  • js -- 常见事件和操作

    1、添加事件 添加事件方式获取模块对象div关联点击事件fun实现事件功能 显示隐藏图片:操作div的displa...

  • jquery笔记002-jquery事件

    blur() 当元素失去焦点时,发生 blur 事件。 blur() 方法触发 blur 事件,或规定当发生 bl...

  • JavaScript3.0

    添加事件 1、添加事件添加事件方式,见代码显示隐藏图片操作div的display属性,在block和none之间切...

  • 事件高级

    1. 事件绑定 给元素添加一个事件。//div.onclick = function(){};上面这种事件的添加方...

  • 2018-10-20

    1. 事件绑定 给元素添加一个事件。//div.onclick = function(){};上面这种事件的添加方...

  • jQuery(五)_事件

    jQuery(五)_事件 添加删除事件div { width: 50px; height: 50px;...

  • js中的事件传播过程

    引子:父div添加监听事件,子div设置监听事件,点击子元素,会出现什么结果 事件传播的三个过程,事件捕获阶段、处...

网友评论

      本文标题:div添加blur事件

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