el-button 点击后依然处于聚焦状态导致的问题

前言

  今天在做一个电子扫码枪的时候,遇到了弹窗关不掉的问题....

场景描述

  弹窗1已经在页面上打开,在弹窗1点击某个按钮,会弹出另外一个扫码弹窗2,当扫码枪读取完数据后,会自动触发关闭扫码弹窗2,

  可是就在这个时候,弹窗2却怎么都关不掉了,关闭后又被触发打开了,刚开始一直找不到原因,尝试改了很多都没生效,最后才知道是弹窗1的el-button点击后

  焦点一直在上面,关闭弹窗2后,又触发了一次焦点点击事件导致弹窗2一直关不掉。

解决办法

  当弹窗1点击按钮后,自动去掉聚焦

代码如下:

  

<el-button ref="saveBtn" size="small" type="primary" @click.native="submit">保存</el-button>

...

methods: {
    submit(evt) {
        let target = evt.target;
        if(target.nodeName == "SPAN"){
            target = evt.target.parentNode;
        }
        target.blur()
    }
}

原因:

下图为el-button的结构:

 

 el-button结构图

点击button的时候,如果点击到文字(即span)上,这个时候evt.target是span标签,这个时候是没法直接触发其父节点button的blur方法的,也就没法强制button失去焦点。所以需要判断点击的是span还是button。

 

posted @ 2022-03-24 10:46  front-gl  阅读(2072)  评论(0编辑  收藏  举报