vue3 Element Plus select 同时使用filterable,multiple交互问题

今天遇到一个问题,element plus 写一个城市下拉,同时支持多选和搜索,加完后发现,搜索后选中一项,点击右侧空白页面关闭下拉框后,select 无法再次选中,并且右上角小三角箭头是展开的,如下图

需要再次点击一下空白位置,或者在输入框内多次点击才能继续打开下拉框,搜索或者选择,用户体验不友好,继续翻官方文档,提供了一个 visible-change 事件来监听下拉框的出现和隐藏,加上去后发现,正常打开关闭,会触发两次事件,而我选中其中一项的时候,会执行三次,多执行了一次打开事件(就是这多出来一次导致上图小三角展开,但是下拉却没出现,不太理解),继续尝试

网上搜了半天,居然没找到一个遇到同样问题,也不知道是百度算法推荐的问题还是什么,最终解决方案如下,记录一下,方便遇到同样问题的小伙伴快速查找

<template>
  <el-select ref="selectCity" v-bind="$attrs" v-model="selected" @change="handleChange" @visible-change="visibleChange" @remove-tag="removeTag">
    <el-option v-for="{id, name} in options" :key="id" :label="name" :value="id" />
  </el-select>
</template>


// ps vue3 只放了解决该问题的方法
// 解决 filterable multiple 同时使用 选中一项后光标默认选中问题
const visibleChange = (item) => {
  if (item) {
    nextTick(() => {
      selectCity.value.focus()
    })
  } else {
    nextTick(() => {
      selectCity.value.blur()
    })
    
  }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值