Vue 项目中 高亮搜索关键字
<div class="search"><el-input placeholder="请输入搜索关键字" clearable v-model="keyWord" @keyup.enter.native="search" prefix-icon="el-icon-search"></el-input><div class="btn"><el-button type="text" @click="search">搜索</el-button></div></div>
@keyup
监听键盘事件,还有keyup.esc
keyup.up
keyup.space
keyup.tab
等- 如果用了组件封装的话,就要在事件后加上
.native
@click.stop
阻止事件冒泡,当父元素和子元素都有点击事件时,点击子元素区域,不触发父元素的点击事件@click.prevent
阻止事件的默认行为,比如阻止 a 标签的自动跳转行为,阻止表单默认提交到 action 的行为
search(){if(!this.keyWord.trim()){this.$message.error("请正确输入搜索关键字")return}this.loading = truethis.isSearch = truethis.getList()},highLight(val,keyWord){const Reg = new RegExp(keyWord, 'i');let res = '';val = val + ''if (val) {res = val.replace(Reg, `<span style="color: #fff;background-color:#e85655">${keyWord}</span>`);this.loading = falsereturn res;}},
- 用
isSearch
来做标识,为 true ,则进行搜索,进行关键字的高亮 String.replace()
返回由替换值替换之后的新字符串- 如果不用正则表达式(i 不区分大小写,g 全局标记)匹配,则
String.replace()
只会替换第一个匹配项 - 如果出现报错
val.replace is not a function
,有可能是 val 的值为数值类型,所以要先将其转为字符串val = val + ''
<el-table-columnlabel="label"min-width="140"align="center"><template slot-scope="scope"><span v-if="!isSearch">{{ scope.row.name || "暂无数据" }}</span><span v-else v-html="highLight(scope.row.name, keyWord)"></span></template></el-table-column>
- 一旦进行搜索,
highLight
方法就会被触发 v-html
可成功解析 html 标签属性后再输出,可在其中自定义样式属性v-text
和v-cloak
会将 html 标签当成字符串输出
参考链接:https://blog.csdn.net/wh13821662259/article/details/114652229
https://blog.csdn.net/fifteen718/article/details/80359844
Vue 项目中 高亮搜索关键字相关推荐
- Vue 项目中高亮格式化 xml 代码
效果演示 安装插件 $ npm install highlight.js --save 代码实现 xml原文如下: <?xml version=\"1.0\" encodin ...
- Vue项目中利用pdf.js实现pdf内容滑选文字展示与搜索功能
Vue项目中利用pdf.js实现pdf内容滑选文字展示与搜索功能 需求:在pdf中鼠标滑动选中一段文字,将选中文字展示到input框中(pdf在iframe中) 完成效果: 关于pdf的引用:我是直接 ...
- vue项目中 一行文本 文字 根据关键字 改变颜色 改变展示颜色2
vue项目中 一行文本 文字 根据关键字 改变颜色 改变展示颜色2 <script src="https://unpkg.com/vue@3/dist/vue.global.js&qu ...
- vue项目中使用百度地图api完成自定义搜索功能(包含搜索详细地理位置)
需求描述: 在vue项目中,有时候,我们需要自定义百度地图的一些功能.譬如,现在的需求,就是需要自定义搜索内容和结果展示. 类似如下页面的功能: 首先在vue项目中,我们可以使用 vue-baidu- ...
- 在vue项目中使用prismjs(网页代码高亮插件)
在vue项目中使用prismjs 什么是prismjs prismjs是一款代码高亮美化插件,在一些技术博客类的网站中需要展示代码时,可以使用它类似与markdown的代码块, 官网链接:https: ...
- vue项目中引入monaco editor
monaco-editor概述 monaco-editor 是微软开源的一款web代码编辑器,vscode就是集成monaco-editor来实现的. 官方示例 官方文档 使用 安装 npm安装 np ...
- vue项目中使用百度地图
安装 首先在vue项目中,我们可以使用 vue-baidu-map 插件来替代直接引入百度地图js sdk. 官方文档 JavaScript API v2.0类参考 npm install --sav ...
- 百度地图的使用方法,如何在Vue项目中使用百度地图
关于百度地图的解释 百度地图又称LBS:LocationBussinessServer,是基于定义位置的商业服务,现在常用的地图有百度地图和高德地图居多 官网入口 https://lbsyun.bai ...
- Vue项目中ESLint配置(VScode)
Vue项目中ESLint配置(VScode) 1.VScode的配置格式化代码 1.1下载eslint插件 1.2配置setting.json 打开左上角文件-首选项-设置,在设置中搜索eslint, ...
最新文章
- C语言经典例30-判断回文数
- linux驱动的入口函数module_init的加载和释放
- 神策数据张何津:构建银行数字化运营体系,赋能业态新发展
- UVA-806 Spatial Structures (四分树)
- boost::signals2::deconstruct相关的测试程序
- python怎么做软件程序_如何打包和发布Python程序
- 挖槽!堪称神级的Java技术手册火了???(文末送书活动)
- 第一次HACK别人的DLL
- 一个基于DataTable的后台框架的实现
- 字符编码ASCII,Unicode和UTF-8
- 图书管理系统的E-R图和数据库模型图
- cmpp协议对服务器资源消耗大吗,cmpp协议采用什么安全算法 CMPP协议有啥用?
- java抽签_java制作一个简单的抽签程序
- imports build constraints exclude all Go files in
- 洛必达法则-求导的方法求解出极限
- Linux虚拟机修改主机名称,设置域名
- 用Python爬取京东手机评论
- Arcgis(二) 绘制区域划分示意图——以重庆五大功能区为例
- 线性调频脉冲雷达信号
- 源发行版17需要目标发行版17
热门文章
- 【91xcz】虚拟内存怎么设置才是最好的状态
- 关于winsock2.h的重定义解决办法
- win10系统网络中看不见计算机,win10系统下网上邻居看不到其他共享电脑的4个解决方法...
- 拥抱 TS:细数选择 TS 的 N 种理由
- 零基础学Python--------第10章 文件及目录操作
- 加密数据机器学习_机器学习加密数据不再是幻想
- Yar的RPC的应用-php
- 女生适合学习java什么_女生不适合学习java吗?其实不是这样的,女生往往更有优势!...
- 六点创业术:从不对称的信息开始,以“白手起家挣一百万”结束
- postgresql 循环函数开发(while,for)