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

前端模糊搜索关键字高亮

效果

original-original

代码

<template><view class="flexStart new-box"><view class="company"><!-- 输入框样式 --><view class="spaceBetween companyName" @click.stop="isCompany = true"><input type="text":style="result.userName.length > 0 ? 'padding-right: 90rpx !important;' : 'padding-right: 0rpx !important;'"@input="companyInput" v-model="result.userName" placeholder="请输入文本内容" placeholder-class="placeholderClass" /><!-- 清除按钮,使用的是icon,直接拷代码会失效 --><view v-if="result.userName != ''" @click.stop="clearCompany" class="close center"><text class="iconfont icon-icon-qingchu"></text></view></view><!-- 列表循环 --><scroll-view v-if="isCompany" scroll-y="true" class="companyPrick"><view v-for="(item,index) in filterMsg" :key="index" @click="prickCompany(item)"class="companyPrick-item"><!-- 每一行的字做拆分,匹配合格的返回 true 高亮 --><span :class="dealStr(str) ? 'hightLight' : ''" v-for="(str,strIndex) in item.name":key="strIndex">{{str}}</span></view></scroll-view><!-- 三角形样式 --><view v-if="isCompany" class="triangle"></view></view></view>
</template><script setup lang="ts">import { ref } from 'vue';import { onLoad } from '@dcloudio/uni-app';const isCompany = ref(false) // 是否显示下拉框const result = ref({ // 提交的数据"userName": "","userId": 0,})const companyList = ref([ // 接口获取数据{"id": 284,"name": "测试智能公司",},{"id": 286,"name": "北京文娱有限公司",},{"id": 289,"name": "广州市天河快递有限公司",},{"id": 290,"name": "广东天河电子科技有限公司",},{"id": 291,"name": "广州市天河汽车维修服务有限公司",},{"id": 293,"name": "智能化工厂",},{"id": 294,"name": "广州天河物联智能科技有限公司",},{"id": 295,"name": "测试工程开发",},{"id": 300,"name": "广东立智科技",},{"id": 302,"name": "广州番禺云服务科技",}])const filterMsg = ref([]) // 实际展现数据// 对输入内容处理判断是否符合条件function companyInput() {// result.value.userName 输入的内容let queryStringArr = result.value.userName.split("");let str = "(.*?)";filterMsg.value = [];let regStr = str + queryStringArr.join(str) + str;let reg = RegExp(regStr, "i"); // 以mh为例生成的正则表达式为/(.*?)m(.*?)h(.*?)/icompanyList.value.map(item => {if (reg.test(item.name)) {filterMsg.value.push(item);}});// 输入为空时显示全部数据if (result.value.userName == '') {filterMsg.value = companyList.value}}// 字体高亮设置function dealStr(str : string) {let status = falsefor (let i = 0; i < result.value.userName.length; i++) {if (result.value.userName[i] == str) {status = true}}return status}// 点击选择单位function prickCompany(item : any) {result.value.userId = item.id as numberresult.value.userName = item.nameisCompany.value = falsecompanyInput()}// 清除输入框function clearCompany() {result.value.userId = 0result.value.userName = ""filterMsg.value = companyList.value}// 获取的数据给实际处理列表赋值,在接口处处理即可onLoad(() => {filterMsg.value = companyList.value})
</script><style lang="scss">.new-box {width: 100vw;height: 100vh;flex-flow: column;}.flexStart {display: flex;justify-content: flex-start;align-items: center;}.spaceBetween {display: flex;justify-content: space-between;align-items: center;}.center {display: flex;justify-content: center;align-items: center;}.company {margin-top: 20vh;border-radius: 20rpx;// padding: 20rpx 32rpx 28rpx 32rpx;flex-flow: column;display: flex;justify-content: space-between;align-items: flex-start;position: relative;box-shadow: 0rpx 0rpx 20rpx 0rpx rgba(0, 82, 217, 0.3);.titleName {padding: 20rpx 32rpx 0 32rpx;font-weight: 600;font-size: 32rpx;}.companyName {width: 686rpx;font-family: PingFang SC, PingFang SC;font-weight: 600;font-size: 36rpx;position: relative;// color: rgba(0, 0, 0, 0.9);input {padding: 20rpx 32rpx 20rpx 32rpx;width: 622rpx;color: #3D3D3D;}.close {right: 0;padding: 20rpx;position: absolute;width: 42rpx;height: 42rpx;}.icon-icon-qingchu {font-size: 36rpx;color: rgba(0, 0, 0, 0.40);}}.companyPrick {box-shadow: 0rpx 0rpx 20rpx 0rpx rgba(0, 82, 217, 0.3);z-index: 99;left: 0rpx;position: absolute;top: 140rpx;width: 622rpx;min-height: 60rpx;max-height: 400rpx;background: #FFFFFF;border-radius: 16rpx;padding: 20rpx 32rpx;.companyPrick-item {padding: 20rpx 0;font-family: PingFang SC, PingFang SC;font-weight: 600;font-size: 32rpx;color: #3D3D3D;}}}.rowTime {display: flex;flex-flow: row;justify-content: space-between;align-items: center;}.hightLight {color: rgba(0, 82, 217, 1);}.triangle {z-index: 100;position: absolute;top: 120rpx;right: 68rpx;width: 0;height: 0;border-left: 10px solid transparent;border-right: 10px solid transparent;border-bottom: 10px solid white;}.placeholderClass{color: rgba(0,0,0,0.26) !important;}
</style>

相关文章:

  • Dubbo3 服务原生支持 http 访问,兼具高性能与易用性
  • android Switch/case with R.id.XXXX in android doesn‘t work 错误: 需要常量表达式解决方案
  • 在超线程CPU上切换到另一个线程
  • 在Android中管理内存
  • 使用 Selenium 自动化获取 CSDN 博客资源列表详解
  • AI在创造还是毁掉音乐?
  • PS系统教学24
  • 如何使用AI解决所有EXCEL公式问题
  • Origin电源维修高压发生器GEXUS-3 GEXUS-15R-02U
  • java基于ssm+jsp 高校二手交易平台
  • React useReducer 使用及 useImmerReducer
  • MySQL入门学习-连接查询.INNER JOIN
  • HTML|02HTML标签
  • 深入理解 Nginx 的正向代理和反向代理
  • 国内算力真的紧缺么?
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • classpath对获取配置文件的影响
  • Debian下无root权限使用Python访问Oracle
  • echarts的各种常用效果展示
  • Git 使用集
  • php中curl和soap方式请求服务超时问题
  • SQLServer之创建数据库快照
  • 测试开发系类之接口自动化测试
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 基于遗传算法的优化问题求解
  • 老板让我十分钟上手nx-admin
  • 码农张的Bug人生 - 初来乍到
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 手写双向链表LinkedList的几个常用功能
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 系统认识JavaScript正则表达式
  • 小程序开发之路(一)
  • 学习笔记:对象,原型和继承(1)
  • 怎样选择前端框架
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • 1.Ext JS 建立web开发工程
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • # 利刃出鞘_Tomcat 核心原理解析(七)
  • #APPINVENTOR学习记录
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (八)Flink Join 连接
  • (多级缓存)多级缓存
  • (附源码)ssm码农论坛 毕业设计 231126
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (生成器)yield与(迭代器)generator
  • (转)fock函数详解
  • (转)Windows2003安全设置/维护
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • .NET 分布式技术比较
  • .NET 药厂业务系统 CPU爆高分析
  • .NET 中 GetProcess 相关方法的性能
  • .NET开源纪元:穿越封闭的迷雾,拥抱开放的星辰
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)