elementUI最新版的el-select使用filterable无效无法匹配正确搜索结果的Bug解决办法

本文介绍了一个ElementUI组件el-select在使用微软拼音输入法时出现的搜索结果不匹配问题,并提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目场景:

下拉框搜索有问题


问题描述:

今天做开发时遇到一个elementUI存在的bug。

当el-select使用filterable功能搜索时,如果你恰巧使用的是微软拼音输入法,那么你有可能会遇到搜索结果和输入的值不匹配,如下图:

我输入的是黄金,结果却显示有双皮蛋,龙须面。

在这里插入图片描述


原因分析:

打开https://element.eleme.cn/#/zh-CN/component/select
定位到【可以利用搜索功能快速查找选项】
切换成微软拼音输入法
点击搜索下拉框输入“黄金”,确认输入时别使用回车或者空格确认,而使用键盘数字选择确认输入。比如按“1”确认输入“黄金”
这时候下拉结果并未更新成只包含黄金的选择项

解决方案:

项目周五要上线,只能自己下载element源码,排查问题了。定位到:element-dev\packages\select\src\select.vue代码,npm run dev浏览器调试起来。
发现当使用微软输入法时,按上面的数字选择键并不会触发@keyup.native事件。而el-select里面的el-input并未使用@input事件监听输入值变化导致bug。
修复方法:el-input中加入@input=“debouncedOnInputChange” 即可。

在这里插入图片描述

我已经给官方提issue了,再官方没解决之前,大家可以按上述办法自行解决一下,然后npm run dist重新生成一下引用代码,再将lib下的index.js和index.css替换到老版本的文件就大功告成啦。

### 解决 `el-select` 下拉框选择后不自动关闭的问题 对于 `el-select` 组件,在选择选项之后下拉菜单未能正常关闭的现象,通常是因为组件内部的状态管理出现了异常或者是某些配置项未被正确设置。为了确保每次选中项目时都能触发预期行为——即自动收起下拉列表,可以采取如下措施: #### 方法一:监听事件并手动控制可见性状态 通过绑定自定义方法至 `change` 或者 `visible-change` 事件来实现对下拉面板显示隐藏逻辑的手动干预。 ```javascript // JavaScript部分 methods: { handleSelectChange(value){ // 执行其他业务逻辑... // 关闭下拉框 this.$refs.mySelect.blur(); } } ``` ```html <!-- HTML模板 --> <template> <div> <!-- ... --> <el-select ref="mySelect" @change="handleSelectChange"> <!-- option items here --> </el-select> <!-- ... --> </div> </template> ``` 这种方法利用了 Vue 的 `$refs` 属性获取 DOM 节点实例,并调用了其上的 `blur()` 函数模拟失去焦点的行为从而达到关闭效果[^1]。 #### 方法二:调整默认参数设定 有时问题可能源于框架本身的默认设置不当所致;此时可尝试修改官方文档推荐的一些重要属性值,比如将 `filterable`, `remote` 等布尔型开关设为 false(除非确实需要用到这些特性),以及适当调整 `clearable` 参数以适应具体应用场景需求。 ```html <el-select clearable placeholder="请选择..." :remote="false" :filterable="false"> <!-- options go here --> </el-select> ``` 上述做法有助于排除因特殊功能启用而引发的副作用干扰[^2]。 #### 方法三:更新 Element UI 版本 考虑到软件库可能存在 bug 导致此现象发生,建议检查所使用Element UI 是否处于最新稳定版。如果不是,则应当考虑升级到更高版本以便获得更好的兼容性和修复已知缺陷的支持[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值