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, ...
随机推荐
- FOJ有奖月赛-2015年11月 Problem B 函数求解
Problem B 函数求解 Accept: 171 Submit: 540Time Limit: 1000 mSec Memory Limit : 32768 KB Problem D ...
- MagicArray:像php一样,让Go业务代码不再卷!
卷!一个字形容了当今码农行业的现状.一层一层的代码结构,一个一个dto,entity,vo,req,resp.这些对象越来越多,让码农们非常劳于奔命,加一个字段,改一个字段,影响面有多少.代码量也越来 ...
- nodejs 中npm下载依赖速度慢的问题
已解决:nodejs 中npm下载依赖速度慢的问题 强烈建议不要用直接使用 cnpm 安装,会有各种诡异的 bug 可以通过重新指定 registry 来解决 npm 安装速度慢的问题 点击查看代码 ...
- 用CloudDrive将阿里云、天翼云、115挂载为电脑本地硬盘
用CloudDrive将阿里云.天翼云.115挂载为电脑本地硬盘 写在前面 它可以把各大在线网盘,直接变成电脑本地硬盘,俗称"网盘挂载".这在一定程度上,确实能缓解存储紧张问题,瞬 ...
- TypeScript Vs JavaScript 区别
一.观察 1. JS 平常的复制类型 let val; val = 123; val = "123"; val = true; val = [1, 3, 5]; 注意点: 由于JS ...
- CTFHub XSS DOM跳转 WriteUp
前文:DOM反射XSS 进入网站,直接查看源代码,下面是关键代码,这里有xss漏洞: <script> var target = location.search.split("= ...
- SPSC Queue
在多线程编程中,一个著名的问题是生产者-消费者问题 (Producer Consumer Problem, PC Problem). 对于这类问题,通过信号量加锁 (https://www.cnblo ...
- P7112 【模板】行列式求值
学<高等代数>第二章的时候过来搜了搜模板,结果真搜到了.于是水一篇题解. 本文部分内容来自<高等代数>. 行列式定义 对于一个 \(n\) 阶行列式 \[A_{n \times ...
- 使用 PostgreSQL 实现 PageRank
PageRank 算法 作为 Google 最早的一个网页排名算法,该算法在早期的搜索引擎中是搜索结果最为准确的,同时也是 Google 发家的一个重要算法.尽管这些年来该算法不再是 Google ...
- 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 06.敲定AI——游戏框架拓展和细节优化
斯坦福课程 UE4 C++ ActionRoguelike游戏实例教程 0.绪论 概述 这篇文章对应课程13课, 50~54节.虽然标题是敲定AI,实际内容和AI关联并不大,主要工作是对游戏内各种细节 ...