vue 搜索框模糊查询 + 优化(节流) + 关键字高亮
实际效果:

防抖

事件响应函数在一段时间后才执行,如果在这段时间内再次调用,则重新计算执行时间;当预定的时间内没有再次调用该函数,则执行doSomeThing方法。
应用场景:
- scroll事件滚动触发
- 搜索框输入查询
- 表单验证
- 按钮提交事件
- 浏览器窗口缩放,resize事件
节流
如果你触发事件,每隔一段时间,只执行一次事件。

1 <template>
2 <div class="wrapper">
3 <van-nav-bar title="党员组织关系转入" />
4 <van-form @submit="onSubmit">
5 <van-cell-group>
6 <div class="label"><span class="require">*</span>转入党支部</div>
7 <div class="van-search-wrapper">
8 <van-search
9 v-model="newParty"
10 placeholder="请输入搜索关键词"
11 @input="partySearch"
12 />
13 <ul class="van-search-list" v-if="showNewPartyList">
14 <li
15 class="van-search-item"
16 v-for="item in newPartyList"
17 :key="item.orgId"
18 @click="selectNewParty(item)"
19 v-html="item.orgFullName"
20 ></li>
21 </ul>
22 </div>
23
24 <div class="label"><span class="require">*</span>介绍信</div>
25 <van-uploader>
26 <div class="upload-box"><i class="icon-upload"></i>上传文件</div>
27 </van-uploader>
28 </van-cell-group>
29 <div style="margin: 16px">
30 <van-button round block type="danger" native-type="submit"
31 >提交</van-button
32 >
33 </div>
34 </van-form>
35 </div>
36 </template>
37
38 <script>
39 export default {
40 data() {
41 return {
42 newParty: "",
43 newPartyList: [],
44 showNewPartyList: false,
45 };
46 },
47 methods: {
48 debounce(fn, delay) {
49 let t = null;
50 return function () {
51 if (t !== null) {
52 clearTimeout(t);
53 }
54 t = setTimeout(() => {
55 fn();
56 }, delay);
57 };
58 },
59 partySearch() {
60 this.debounce(this.newPartySearch(), 1000);
61 },
62 async newPartySearch() {
63 // 防抖操作
64 let { data } = await this.$http.get(
65 "/party/h5/transfer/in/getPartyOrgData",
66 {
67 params: {
68 orgFullName: this.newParty,
69 },
70 }
71 );
72 if (data.code === 200) {
73 this.newPartyList = data.data;
74 if (this.newPartyList && this.newPartyList.length > 0) {
75 this.showNewPartyList = true;
76 // 高亮搜索词
77 this.newPartyList.map((item) => {
78 item.orgFullName = this.brightKeyword(item.orgFullName);
79 });
80 } else {
81 this.showNewPartyList = false;
82 }
83 }
84 },
85 brightKeyword(val) {
86 const keyword = this.newParty;
87 if (val.indexOf(keyword) > -1) {
88 // replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
89 return val.replace(keyword, `<span class="red">${keyword}</span>`);
90 } else {
91 return val;
92 }
93 },
94 deleteBrightKeyword(val) {
95 const keyword = this.newParty;
96 if (val.indexOf(keyword) > -1) {
97 // replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
98 return val.replace(`<span class="red">${keyword}</span>`, keyword);
99 } else {
100 return val;
101 }
102 },
103 selectNewParty(item) {
104 this.newParty = this.deleteBrightKeyword(item.orgFullName);
105 this.showNewPartyList = false;
106 },
107 onSubmit(values) {
108 console.log("submit", values);
109 },
110 },
111 };
112 </script>
113
114 <style lang="scss">
115 .label {
116 line-height: 0.8rem;
117 color: #646566;
118 font-size: 14px;
119 padding: 0 0.3rem;
120 .require {
121 color: #f00;
122 margin-right: 0.12rem;
123 }
124 }
125 .upload-box {
126 width: 6.86rem;
127 height: 0.9rem;
128 border: 1px dashed #f0443c;
129 margin-left: 0.3rem;
130 border-radius: 0.1rem;
131 margin-bottom: 0.3rem;
132 display: flex;
133 align-items: center;
134 justify-content: center;
135 .icon-upload {
136 display: inline-block;
137 width: 0.26rem;
138 height: 0.26rem;
139 background: url(../assets/img/icon-upload.png) no-repeat left top;
140 background-size: 100% 100%;
141 margin-right: 0.16rem;
142 }
143 }
144 .red {
145 color: #da2a2a;
146 }
147 </style>
参照:
https://blog.csdn.net/weixin_44980732/article/details/106326200(vue输入框使用模糊搜索)
https://blog.csdn.net/like_js/article/details/112535364(vue 搜索框模糊查询 + 优化(节流) + 关键字高亮)
vue 搜索框模糊查询 + 优化(节流) + 关键字高亮的更多相关文章
- fineui 实现下拉框模糊查询
官网下拉框模糊查询只能实现首字母模糊匹配,如果实现类似这样的 like '%'+关键字+'%',却没有. 今天群里的没想好同学分享了,前后模糊匹配代码. 代码示例: <body> ...
- vue实现输入框的模糊查询(节流函数的应用场景)
上一篇讲到了javascript的节流函数和防抖函数,那么我们在实际场合中该如何运用呢? 首先,我们来理解一下:节流函数首先是节流,就是节约流量.内存的损耗,旨在提升性能,在高频率频发的事件中才会用到 ...
- Oracle 模糊查询 优化
模糊查询是数据库查询中经常用到的,一般常用的格式如下: (1)字段 like '%关键字%' 字段包含"关键字"的记录 即使在目标字段建立索引也不会走索引,速度最慢 (2 ...
- js实现下拉框模糊查询
keyup方法触发模糊查询 list : Array<any> //下拉列表所有内容 filtList:Array<any> //过滤后的内容 inputContent : s ...
- C#---ASP页面的下拉框模糊查询功能
基础方法支持: 一. DataTable 转换成 Json 换句话说如何在ASP.NET将一个DataTable序列化为 Json数组,或者如何从一个DataTable返回一个Json字符串. 使用 ...
- Spring Data Jpa使用@Query注解实现模糊查询(LIKE关键字)
/** * * @param file_name 传入参数 * @return */ @Query(value = "select * from user where name LIKE C ...
- 基于bootstrap selectpicker ,实现select下拉框模糊查询功能
1.html代码块 需要引入bootstrap的css js jquery bootstrap.css bootstrap-select.min.css jquery-1.11.3.min.js bo ...
- winform listbox与textbox组合提示框 模糊查询
private void listbox1_MouseClick(object sender, MouseEventArgs e) { textbox1.Vis ...
- Bootstrap Search Suggest 下拉框模糊查询
源码地址:https://github.com/lzwme/bootstrap-suggest-plugin 有时间会完善!暂时有点忙!
- vue 如何实现 Input 输入框模糊查询方法
原理:原生js的indexOf() 方法,该方法将从头到尾地检索数组,看它是否含有对应的元素.开始检索的位置在数组 start 处或数组的开头(没有指定 start 参数时).如果找到一个 item, ...
随机推荐
- Nim 枚举类型 对性能的影响
Nim 枚举类型 对性能的影响 继上一篇文章<Nim 概念 Concept 对性能的影响>后,我在想,既然 method 虚方法造成性能的影响很大,那么有没有更快的方法实现,当然是有的,那 ...
- 【WCH以太网接口系列芯片】基于CH395的组播应用
---------------------------------------------------------------------------------------------------- ...
- HTML中的三个列表,具体的使用及列表样式
HTML有三种列表:## 一.有序列表 有序列表(Ordered lists):用数字或字母来标记列表项,每个列表项前会有一个数字或字母. ```html<ol> <li>列表 ...
- Mybatis-Flex之增、删、改
方法全解 (1) INSERT BaseMapper 的接口提供了 insert 和 insertBatch 方法,用于新增数据: insert(entity):插入实体类数据,不忽略 null 值. ...
- 安卓之各种Adapter优劣分析
文章摘要 在 Android 开发中,适配器(Adapter)是一种非常重要的设计模式,它用于将数据与视图组件进行绑定.适配器可以帮助我们在不同的视图组件(如 ListView.GridView.Re ...
- Cisco 交换机利用CDP数据自动绘制网络拓扑图[drawio]-实践
进行网络运维,必须对网络拓扑情况进行详细的掌握,但是网络改动后,更新网络拓扑比较繁琐,维护人员容易懈怠,久而久之,通过人工绘制的网络拓扑很容易与现有网络出现偏差. 现在,可以通过python 丰富的库 ...
- NetSuite 开发日记:创建 Transfer(转账单)
经测试,截止到 2022.12.26,Transfer 只能使用 Client 脚本创建,使用服务端脚本创建报错:ReferenceError: "document" is not ...
- 【笔记】 springCloud-configServer配置中心
当然第一步还是得要了解啦! 介绍 做项目, 那么就少不了配置微服务架构中,配置文件众多,各个服务的配置文件也有可能不一样, Spring为我们提供了相应的配置中心组件--Spring Cloud co ...
- Android开发之账号密码登录跳转、固定时间显示进度条实现
登陆界面.登陆跳转和进度条功能实现 首先打开Android studio新建一个空项目,打开layout文件夹下的activity_main.xml文件,来设置登陆界面的布局.登陆界面需要两个输入框, ...
- Spring Boot入坑-3-Maven简介
概述 Maven是一个自动化构建工具 能够将支持Maven项目的依赖包从远程仓库拉取到本地仓库,并进行依赖管理 项目中通过pom.xml来描述项目,对项目依赖进行管理与配置 给项目提供编译.打包.安装 ...