实际效果:

防抖

事件响应函数在一段时间后才执行,如果在这段时间内再次调用,则重新计算执行时间;当预定的时间内没有再次调用该函数,则执行doSomeThing方法。

应用场景:

  1. scroll事件滚动触发
  2. 搜索框输入查询
  3. 表单验证
  4. 按钮提交事件
  5. 浏览器窗口缩放,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 搜索框模糊查询 + 优化(节流) + 关键字高亮的更多相关文章

  1. fineui 实现下拉框模糊查询

    官网下拉框模糊查询只能实现首字母模糊匹配,如果实现类似这样的 like '%'+关键字+'%',却没有. 今天群里的没想好同学分享了,前后模糊匹配代码.   代码示例: <body>   ...

  2. vue实现输入框的模糊查询(节流函数的应用场景)

    上一篇讲到了javascript的节流函数和防抖函数,那么我们在实际场合中该如何运用呢? 首先,我们来理解一下:节流函数首先是节流,就是节约流量.内存的损耗,旨在提升性能,在高频率频发的事件中才会用到 ...

  3. Oracle 模糊查询 优化

    模糊查询是数据库查询中经常用到的,一般常用的格式如下: (1)字段  like '%关键字%'   字段包含"关键字"的记录   即使在目标字段建立索引也不会走索引,速度最慢 (2 ...

  4. js实现下拉框模糊查询

    keyup方法触发模糊查询 list : Array<any> //下拉列表所有内容 filtList:Array<any> //过滤后的内容 inputContent : s ...

  5. C#---ASP页面的下拉框模糊查询功能

    基础方法支持: 一. DataTable 转换成 Json 换句话说如何在ASP.NET将一个DataTable序列化为 Json数组,或者如何从一个DataTable返回一个Json字符串. 使用 ...

  6. Spring Data Jpa使用@Query注解实现模糊查询(LIKE关键字)

    /** * * @param file_name 传入参数 * @return */ @Query(value = "select * from user where name LIKE C ...

  7. 基于bootstrap selectpicker ,实现select下拉框模糊查询功能

    1.html代码块 需要引入bootstrap的css js jquery bootstrap.css bootstrap-select.min.css jquery-1.11.3.min.js bo ...

  8. winform listbox与textbox组合提示框 模糊查询

      private void listbox1_MouseClick(object sender, MouseEventArgs e)        {            textbox1.Vis ...

  9. Bootstrap Search Suggest 下拉框模糊查询

    源码地址:https://github.com/lzwme/bootstrap-suggest-plugin 有时间会完善!暂时有点忙!

  10. vue 如何实现 Input 输入框模糊查询方法

    原理:原生js的indexOf() 方法,该方法将从头到尾地检索数组,看它是否含有对应的元素.开始检索的位置在数组 start 处或数组的开头(没有指定 start 参数时).如果找到一个 item, ...

随机推荐

  1. idea常用快捷键使用

    idea常用快捷键使用:1.shift+u 大小写2.alt+shift+u 驼峰命名(插件:CamelCase)3.ctrl+alt 点击跳转实现类4.ctrl 点击跳转接口类5.Alt+F7 查看 ...

  2. python3发送Gratuitous ARP更新vip绑定关系

    操作系统 :CentOS 7.6_x64 Python版本:3.9.12 FreeSWITCH版本 :1.10.9 高可用场景下,vip切换完成后需要发送arp广播更新ip和mac地址的绑定关系,如果 ...

  3. 如何用python脚本制作生成CANdbc

    最近在工作中,有同事拿了一个excel的dbc表格,在用官方的dbc工具一个一个创建信号,大概看了一下共累计20多个节点,300多个信号,居然在手动处理,顿感无语.. 于是在网络上搜相关的dbc 通过 ...

  4. Python——第四章:闭包(Closure)、装饰器(Decorators)

    闭包: 本质, 内层函数对外层函数的局部变量的使用. 此时内层函数被称为闭包函数    1. 可以让一个变量常驻与内存,可随时被外层函数调用.    2. 可以避免全局变量被修改.被污染.更安全.(通 ...

  5. Luogu P5515 [MtOI2019]灵梦的计算器

    简化题意 给定三个实数 \(n, a, b\),求方程 \(\left \lfloor {x ^ a + x ^ b} \right \rfloor = \left \lfloor {n ^ a + ...

  6. 2024年,在风云际会的编程世界里,窥探Java的前世今生,都说它穷途末路,我认为是柳暗花明!

    2024年,在风云际会的编程世界里,窥探Java的前世今生,都说它穷途末路,我认为是柳暗花明! 文编|JavaBuild 哈喽,大家好呀!我是JavaBuild,以后可以喊我鸟哥,嘿嘿!俺滴座右铭是不 ...

  7. JavaImprove--Lesson01--枚举类,泛型

    一.枚举 认识枚举类 枚举是一种特殊的类 枚举的格式: 修饰符  enmu   枚举类名{ 名称1,名称2: 其它成员 } //枚举类 public enum A { //枚举类的第一列必须是罗列枚举 ...

  8. 文心一言 VS 讯飞星火 VS chatgpt (19)-- go语言的slice和rust语言的Vec的扩容流程是什么?

    go语言的slice和rust语言的Vec的扩容流程是什么? 文心一言: 在Go语言中,slice(切片)和Rust语言中的Vec都是用于存储一组固定长度的元素的数据结构.它们的扩容流程略有不同,下面 ...

  9. CodeForces 1105D 嵌套BFS

    CodeForces 1105D 嵌套BFS 题意 - 给我们一个n*m的阵列,一个格子如果是#则为障碍,若为.则为空,若为数字,则代表这个格子属于该数字代表的玩家. - 给我们每个玩家(不到十个)的 ...

  10. 地图服务器GeoServer的安装与配置

    目录 1.安装配置Java 2.安装配置Tomcat 3.安装配置GeoServer GeoServer提供了多种安装配置方式,但是本质上GeoServer是一个基于Java Web的项目,因此我们理 ...