前端模糊搜索关键字高亮

效果

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>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/31465.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C盘满了怎么清理?一招让你远离C盘空间不足的烦恼

C盘满了怎么清理&#xff1f;一招让你远离C盘空间不足的烦恼&#xff0c;当C盘空间满了时&#xff0c;会给我们来一系列烦恼和潜在问题。比如&#xff1a;系统运行缓慢、程序崩溃或无法安装、启动时间变长、系统不稳定、文件管理困难、游戏卡顿、电脑卡顿、系统故障等问题&…

Linux使用Docker部署mysql5.7

一、拉取镜像 docker pull mysql:5.7 二、查看镜像 docker images 三、创建容器 这里稍微解释下 -p参数是端口映射 -v参数是数据卷挂载 数据卷挂载是Docker中的一种功能&#xff0c;它允许将主机上的目录或文件系统与容器内的目录绑定&#xff0c;实现数据的持久化存储…

短剧片源授权,类目丰富优惠多,抢先一步更新你的短剧系统片库!

前言 如今的短剧作为一种新兴的视听艺术形式&#xff0c;正以其独特的魅力迅速占领市场高地。为了满足广大短剧爱好者和从业者的需求&#xff0c;我们提供短剧片源授权服务&#xff0c;凭借剧场独家提供的丰富片源&#xff0c;助力您轻松更新短剧系统片库&#xff0c;抢占市场…

MySQL小版本升级(8.0.36->8.0.37)

关于MySQL升级的话MySQL官方文档上面介绍了2个方法&#xff0c;’就地升级’和‘逻辑升级’。’就地升级‘就是升级底层的RPM包而‘逻辑升级’就是将旧MySQL数据库上的信息迁移到新MySQL数据库上。 本篇文章介绍到的是RPM包升级 升级MySQL版本的典型步骤包括&#xff1a; 备份&…

算法篇-排序

快排 算法思想&#xff1a;每次找一个基数&#xff0c;然后对数组左右遍历&#xff0c;将小于基数的数据放到左边&#xff0c;大于基数的数放到右边&#xff0c;然后将基数左边&#xff0c;右边进行迭代再排序。 public static void quickSort(int[] nums, int left, int ri…

SCIE与SCI期刊的区别

在学术出版领域&#xff0c;SCI&#xff08;Science Citation Index&#xff09;和SCIE&#xff08;Science Citation Index Expanded&#xff09;是两个关键的索引数据库&#xff0c;它们对科研人员在选择发表论文的期刊时起着至关重要的作用。虽然这两个术语经常被交替使用&a…

Python100题(含答案)

温馨提示&#xff1a;篇幅有限&#xff0c;已打包文件夹&#xff0c;获取方式在&#xff1a;文末 温馨提示&#xff1a;篇幅有限&#xff0c;已打包文件夹&#xff0c;获取方式在&#xff1a;文末 篇幅有限&#xff0c;这份完整版的Python100题已经上传&#xff0c;朋友们如果…

easyx之图形库复习--自制写轮眼的图形绘制

引子效果图如下&#xff1a; 什么是easyx&#xff1f; EasyX 是针对 C/C 的图形库&#xff0c;可以帮助使用C/C语言的程序员快速上手图形和游戏编程。比如&#xff0c;可以用 VC EasyX 很快的用几何图形画一个房子&#xff0c;或者一辆移动的小车&#xff0c;可以编写俄罗斯方…

AI PPT生成器,一键在线智能生成PPT工具

PPT作为商业沟通和教育培训中的重要工具&#xff0c;PPT制作对于我们来说并不陌生。但是传统的PPT制作不仅耗时&#xff0c;而且想要做出精美的PPT&#xff0c;需要具备一定的设计技能。下面小编就来和大家分享几款AI PPT工具&#xff0c;只要输入主题&#xff0c;内容就可以在…

1台SW工作站5人同时使用能实现吗

在当今的数字化时代&#xff0c;高效的工作方式和技术创新是企业竞争力的重要组成部分。SolidWorks作为一款功能强大的三维设计软件&#xff0c;广泛应用于机械、电子、建筑等多个领域。然而&#xff0c;随着企业规模的扩大和团队人数的增加&#xff0c;如何充分利用有限的资源…

关于undo的问题

以下都查看下 undo保留时间&#xff1a; show parameter undo; 查UNDO段状态及自动调整的保留时间命令&#xff1a; select BEGIN_TIME,END_TIME,MAXQUERYLEN,MAXQUERYSQLID,TUNED_UNDORETENTIONfrom V$UNDOSTAT Order By begin_time Desc; 查UNDO段EXPIRED等使用情况&#…

大模型网信办备案全网最详细流程【附附件】

本文要点&#xff1a;大模型备案最详细说明&#xff0c;大模型备案条件有哪些&#xff0c;《算法安全自评估报告》模板&#xff0c;大模型算法备案&#xff0c;大模型上线备案&#xff0c;生成式人工智能(大语言模型)安全评估要点&#xff0c;网信办大模型备案。 大模型备案安…

Linux企业 集群批量管理-秘钥认证

集群批量管理-秘钥认证 概述 管理更加轻松&#xff1a;两个节点&#xff0c;通过秘钥认证形成进行访问&#xff0c;不需要输入密码&#xff0c;单向服务要求&#xff08;应用场景&#xff09;&#xff1a; 一些服务在使用前要求我们做秘钥认证 手动写批量管理脚本名字&#x…

来自 Kubecon Paris 的快讯

一年一度的 KubeconEU 审查时间到了——它未经过滤&#xff0c;偶尔不受 CNCF 的欢迎——但剧透警告&#xff0c;巴黎取得了巨大的成功。我们总是爱这里的人&#xff0c;我们并不总是爱场地或演出管理&#xff0c;但巴黎是一场胜利&#xff0c;更重要的是&#xff0c;Kubernete…

德国慕尼黑智慧能源展去了多少家国内充电企业?

无论是为了突破本土市场的局限&#xff0c;出海开拓更广阔的国际市场需求&#xff0c;增加销售额&#xff0c;分散市场风险&#xff0c;还是为了通过出海获得国际经验后以反哺国内市场。 各大行业都出现了“要么出海&#xff0c;要么出局”的声音。扬帆出海&#xff0c;参与全球…

C语言 | Leetcode C语言题解之第155题最小栈

题目&#xff1a; 题解&#xff1a; //单调栈 单调递减 typedef struct {//正常 stackint stack[10000];int stackTop;//辅助 stackint minStack[10000];int minStackTop; } MinStack;MinStack* minStackCreate() {MinStack* newStack (MinStack *) malloc(sizeof(MinS…

Android SurfaceFlinger——SF与HWC交互流程(六)

在上一篇 HWC2On1Adapter 初始化完成后&#xff0c;调用 initWithDevice() 实例化 HwcHal 对象&#xff0c;然后创建高级接口&#xff08;IComposer&#xff09;&#xff0c;使得调用者能够通过这个接口与硬件进行交互。这里我们就来看一下 HwcHal 和 IComposer 的初始化流程。…

到底什么是载波聚合?

载波聚合技术是无线通信系统中的一项关键创新&#xff0c;它极大地提升了数据传输的效率和速度。 这项技术的核心思想其实相当直观&#xff0c;即&#xff1a;如果能够将多个独立的通信路径或连接聚合起来&#xff0c;那么相比单一路径&#xff0c;就能够传输更多的信息。 这就…

mysql设置密码复杂度策略,登录失败次数限制

在配置文件中加入如下配置&#xff0c;重启mysql服务 [mysqld] #密码复杂度插件 plugin-load-addvalidate_password.so validate-passwordFORCE_PLUS_PERMANENT validate_password_policy2 # 0简单 1普通 2困难 validate_password_length9 # 密码长度限制 #登录失败次数、时间…

描述React Hooks中的useMemo和useCallback的区别和用途。

React Hooks API中的useMemo和useCallback都是用于优化性能的钩子&#xff0c;但它们的用途和工作方式略有不同&#xff1a; 推荐大家看看我过往的文章 useMemo useMemo是一个性能优化钩子&#xff0c;它返回一个记忆化的值。useMemo可以避免在组件渲染时进行昂贵的计算或操作…