el-select 下拉框点击某一禁选选项 按Esc关闭弹窗 下拉框无法收起问题

文章讲述了在使用ElementUI的el-dialog对话框与el-select下拉框配合时,如何确保在关闭对话框后下拉选项面板正确隐藏的问题,通过监听dialog关闭事件并使用setTimeout包裹blur方法来触发下拉框的失焦行为以实现自动收起。
摘要由CSDN通过智能技术生成

下面请看详细内容
在这里插入图片描述
会出现下图情况
在这里插入图片描述
弹窗能正常关闭 但是下拉框选项面板仍然存在

解决思路1:
本来想的是监听dialog的Esc关闭事件 关闭时修改el-select-dropdown的css样式 将display = none
这个没实现

解决思路2:
看官网发现有个失焦事件 他手动触发失焦的话 会自动收起下拉面板
在这里插入图片描述
弹窗监听关闭的事件closed

  <el-dialog title="添加新菜" :close-on-click-modal="false" :visible.sync="visible" :closed="menuSelect" width="50%">

给el-select 加上ref 起个小名 menuOptions

   <el-row :gutter="24">
        <el-col :span="24">
          <el-form-item label="字段1" prop="menu">
            <el-select v-model="menu" style="width:100%;" clearable ref="menuOptions">
              <el-option v-for="item in menuOptions" :disabled="item.disable == 1" :key="item.key" :label="item.label" :value="item.key">
              </el-option>
            </el-select>
          </el-form-item>
        </el-col>
      </el-row>

dialog事件

  menuSelect() {
     setTimeout(() => {
        this.$refs.menuOptions.blur()
     }, 50)
    }

这里有个需要注意的点 blur事件 需要setTimeout包上否则会报错
vue.runtime.esm.js:587 [Vue warn]: Error in render: “TypeError: Cannot read properties of undefined (reading ‘blur’)”
我感觉可能是同步异步执行顺序的事吧

加定时器是看到这位博主的方法 感谢~

http://t.csdnimg.cn/I3zO0

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值