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, ...
随机推荐
- 银河麒麟V10(飞腾ARM CPU)安装KVM踩坑记
服务器配置信息 品牌:GreetWall CPU:飞腾FT-2000+/64 64bit 操作系统:Linux-4.19.90-24.4.v2101.ky10.aarch64-with-kylin-1 ...
- [ABC265G] 012 Inversion
Problem Statement You are given a sequence $A=(A_1,\ldots,A_N)$ of length $N$. Each element is $0$, ...
- 校验码——循环校验码CRC,海明校验码
- Spring Boot内置的一些工具类
1.断言Assert工具类 // 要求参数 object 必须为非空(Not Null),否则抛出异常,不予放行 // 参数 message 参数用于定制异常信息. void notNull(Obje ...
- c语言指针数组和数组指针
1 #include<stdio.h> 2 #include<iostream> 3 using namespace std; 4 int main(){ 5 int a[2] ...
- 5分钟攻略Spring-Retry框架实现经典重试场景
前言 今天分享干货,控制了篇幅,5分钟内就能看完学会. 主题是Spring-Retry框架的应用,做了一个很清晰的案例,代码可下载自测. 框架介绍 Spring-Retry框架是Spring自带的功能 ...
- Scrapy自带的断点续爬JOB-DIR参数
参考官方文档:https://docs.scrapy.org/en/latest/topics/jobs.html?highlight=JOBDIR#jobs-pausing-and-resuming ...
- Pikachu漏洞靶场 ../../(目录遍历)
目录遍历 概述 在web功能设计中,很多时候我们会要将需要访问的文件定义成变量,从而让前端的功能便的更加灵活.当用户发起一个前端的请求时,便会将请求的这个文件的值(比如文件名称)传递到后台,后台再执行 ...
- eclipse 使用技巧和java相关
1,内容提示:alt + / 需要配置:windwos ->preferences中搜索keys,搜索alt +/ 发现它配置的是单词完成.搜索content assist,将alt ...
- vue常用函数
this.$router.back(); //回退上一页面