实际效果:

防抖

事件响应函数在一段时间后才执行,如果在这段时间内再次调用,则重新计算执行时间;当预定的时间内没有再次调用该函数,则执行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. C++ Qt 开发:ListWidget列表框组件

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍ListWid ...

  2. Socket.D 基于消息的响应式应用层网络协议

    首先根据 Socket.D 官网的副标题,Socket.D 的自我定义是: 基于事件和语义消息流的网络应用协议. 官网定义的特点是: 基于事件,每个消息都可事件路由 所谓语义,通过元信息进行语义描述 ...

  3. Java操作Word修订功能:启用、接受、拒绝、获取修订

    Word的修订功能是一种在文档中进行编辑和审阅的功能.它允许多个用户对同一文档进行修改并跟踪这些修改,以便进行审查和接受或拒绝修改.修订功能通常用于团队合作.专业编辑和文件审查等场景. 本文将从以下几 ...

  4. 将MultipartFile对象转换成File对象

    将MultipartFile对象转换成File对象 // 将MultipartFile对象转换成File对象 private File convertToFile(MultipartFile mult ...

  5. 递归产生StackOverflowError

    package com.guoba.digui; public class Demo01 { public void A(){ A();//自己调用自己,递归没用好,产生错误java.lang.Sta ...

  6. LLaMA大型语言模型

    LLaMA (Large Language Model Meta AI)是Meta公司发布的大型语言模型系列,近日LLaMA种子文件被合并到了GitHub 上,同时一些项目维护者给予了批准,目前该项目 ...

  7. Napping - vulnhub - writeup

    Napping - vulnhub - writeup 信息收集 目标开放了22和80. root@kali ~ » arp-scan -I eth1 -l Interface: eth1, type ...

  8. Ubuntu系统部署后优化

    Ubuntu系统配置调整 前期准备 #更改主机名,重启后不变 hostnamectl set-hostname Zabbix-Server01 #更改主机名,重启后变回从前 hostname Zabb ...

  9. Next.js 开发指南 路由篇 | App Router

    前言 路由(routers)是应用的重要组成部分.所谓路由,有多种定义,对于应用层的单页应用程序而言,路由是一个决定 URL 如何呈现的库,在服务层实现 API 时,路由是解析请求并将请求定向到处理程 ...

  10. JavaFx之controlsfx8下载(十七)

    JavaFx之controlsfx8下载(十七) controlsfx是JavaFx功能的扩展补充,这里我使用java8,我将源码下载下来并编译好jar,在java8的环境双击运行runSamples ...