当前位置: 首页 > news >正文

vue el-autocomplete输入框自动匹配优化,建议项按高度相似降序

官方提供的范例只是输入项开头匹配才有建议项。
https://element.eleme.cn/#/zh-CN/component/input
在这里插入图片描述

实际使用调整一下更好用。

调整目标:
1.输入串与建议项有字符匹配就出现建议项
2.建议项按与输入高度相似降序排列
3.匹配字符串高亮显示

测试版本vue2

<el-autocompletev-model="value":fetch-suggestions="querySearch"placeholder="请输入":trigger-on-focus="false"@select="handleSelect($event)">><template slot-scope="{ item }"><span v-html="brightenKeyword(item, value)" /></template></el-autocomplete>

js

querySearch(queryString, cb) {var data = this.metricsLabelDatavar lowerQuery = queryString.toLowerCase()var results = queryString ? data.filter(this.createFilter(lowerQuery)) : data// 对结果进行排序:开头匹配 > 其他位置匹配 > 字母顺序if (queryString) {results.sort((a, b) => {const aLower = a.toLowerCase()const bLower = b.toLowerCase()// 检查是否开头匹配(优先级最高)const aStarts = aLower.startsWith(lowerQuery) ? 0 : 1const bStarts = bLower.startsWith(lowerQuery) ? 0 : 1if (aStarts !== bStarts) return aStarts - bStarts// 比较匹配位置(越靠前优先级越高)const aIndex = aLower.indexOf(lowerQuery)const bIndex = bLower.indexOf(lowerQuery)if (aIndex !== bIndex) return aIndex - bIndex// 比较字符串长度(越短匹配越精确)if (a.length !== b.length) return a.length - b.length// 最后按字母顺序排序return aLower.localeCompare(bLower)})}cb(results)},createFilter(queryString) {return (d) => {return d.toLowerCase().includes(queryString)}},handleSelect(item) {this.value = item},// 匹配项高亮显示brightenKeyword(val, keyword) {const Reg = new RegExp(keyword, 'i')if (val) {return val.replace(Reg, `<span style="color: #409EFF;">${keyword}</span>`)}}

测试建议部分数据:

this.metricsLabelData=["application_ready_time_seconds","application_started_time_seconds","redis_uptime_in_seconds","zk_up","group","mysql_up","up"]

运行效果:
在这里插入图片描述

在这里插入图片描述

http://www.dtcms.com/a/391311.html

相关文章:

  • 十分钟了解@Version注解
  • vue3+ts+uniapp H5微信小程序app有截止日期的日期date-pcicker组件
  • 设计模式-观察者模式详解
  • centos7--安装海量数据库Vastbase M100
  • Apache Commons DBCP连接池生产环境配置推荐
  • 【11/20】实时数据基础:WebSocket 在 Express 和 Vue 中的整合,实现简单聊天功能
  • 五传输层-TCP UDP慢启动-真题
  • ARM基础知识
  • 从零开始的指针(5)
  • TDMQ CKafka 版客户端实战指南系列之二:消费消息最佳实践
  • Comcast 没有对比就没有伤害
  • AI悬浮窗 1.0 | 快捷提取文字,总结信息,支持提取文字、理解屏幕上的图案、总结分析信息
  • MySQL、PostgreSQL、MongoDB和Redis全面对比
  • 隐私保护与数据安全合规(七)
  • 登录 双层拦截器+redis
  • TM56M152A (SOP16) HITENX海速芯 8位微控制器MCU 芯片深度解析
  • 理解元学习器 - 如何使用机器学习估计异质处理效应(四)
  • [数据结构] Map和Set
  • [Go类库分享]Go template模版库
  • 辅助搜题系统-基于模糊搜索,上传word题库后,可搜索答案
  • 【完整源码+数据集+部署教程】遥感农田森林岩石图像分割系统: yolov8-seg-C2f-DCNV2
  • RTX 4090助力深度学习:从PyTorch到生产环境的完整实践指南
  • AWS中国云中的调用链监控(EC2版)
  • CI/CD到底是什么?
  • 3dmax三维动画渲染很慢怎么办?
  • ASIS CTF 2025 SatoNote
  • BasicForm的使用
  • CSP初赛——STL中的函数整理
  • 小杰机器学习高级(two)——极大似然估计、交叉熵损失函数
  • 关于px4 1.15.0电机控制有效矩阵的更新