vue+Element实现搜索关键字高亮功能


Posted in Javascript onMay 28, 2019

最近做了一个日志搜索的需求,要在页面上实现海量日志的关键字搜索。为了搜索更清晰,我最终实现了多条件搜索,且搜索结果的记录中的关键字全部高亮。

一、实现思路

1 实时监控表格,实现关键字的定位;

2 点击搜索按钮以后,实现记录中关键字的样式变化(即高亮)。

二、实现过程

1 搜索条件表单

了解了实现思路,就让我们一起来看一下实现过程(关键位置均给了注释)

<el-form :inline="true" :model="formQuery" >
  <el-row>
  <el-col :span="8">
   <el-form-item label="日志编码" >
   <el-input v-model="formQuery.queryMessage1" ></el-input>
   </el-form-item>
   </el-col>
   <el-col :span="8" >
   <el-form-item label="日志编码2">
   <el-input v-model="formQuery.queryMessage2" ></el-input>
   </el-form-item>
   </el-col>
   </el-row>
   <el-row>
   <el-col :span="20">
   <el-form-item label="日志编码3">
   <el-input v-model="formQuery.queryMessage3" ></el-input> </el-form-item>
   </el-col>
   <el-col :span="4">
   <el-form-item>
   <el-button @click="loadData()" >查询</el-button>
   </el-form-item>
   </el-col>
  </el-row>
</el-form>

2 表格部分

<el-table :fit="true" ref="logInfosData" max-height="700" :data="logInfosData"
  element-loading-text="loading" :highlight-current-row="true"
   size="mini" >
  <el-table-column prop="_source.message" :label="$t('Loginformation')" sortable >
    <template slot-scope="scope">
    <span v-html="showData(message)"
      == <!--注意此处的写法,该函数showData返回的结果是一段HTML代码,在这里是直接进行填充,填充的内容是修改了关键字样式以后的内容。-->==
      ></span>
     </template>
    </el-table-column>
</el-table>

3.实时监听表格

computed:{
  // 实时监听表格
  tables: function() {
   const search = this.listQuery.queryMessage||this.listQuery.queryMessage2||this.listQuery.queryMessage3
   if (search) {
    return this.logInfosData.filter(dataNews => {
     return Object.keys(dataNews).some(key => {
      return String(dataNews[key]).toLowerCase().indexOf(search) > -1
     })
    })
   }
   return this.tableData
  }
 }

4.修改关键字样式

// 筛选变色
  showData(val) {
   val = val + '';
   if (this.checkPara(val,this.listQuery.queryMessage)||this.checkPara(val,this.listQuery.queryMessage2)
    ||this.checkPara(val,this.listQuery.queryMessage3)) {
    //如果搜索结果记录包含关键字中的任何一个,那么修改样式
    return val.replace(this.listQuery.queryMessage'<font color="#409EFF">' + this.listQuery.prodcd + '</font>')
     .replace(this.listQuery.queryMessage2, '<font color="#409EFF">' + this.listQuery.queryMessage3 + '</font>')
     
   } else {
    return val //不做任何修改
   }
  },
  //判断搜索记录是否包含某个关键字
  checkPara(val,para){
    if (val.indexOf(para) !== -1 && para !== ''){
     return true;
    }else {
     return false
    }
  }

三、总结

实现以后会觉得思路很简单。其实任何一个多么复杂的需求,只要在做之前,理清思路,分成一个个小的实现过程,那么就自然很简单,而且效率也很高。这也是我的真切感受。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS获取整个页面文档的实现代码
Dec 15 Javascript
javascript实现动态模态绑定grid过程代码
Sep 22 Javascript
javascript中in运算符用法分析
Apr 28 Javascript
VUEJS实战之修复错误并且美化时间(2)
Jun 13 Javascript
用jmSlip编写移动端顶部日历选择控件
Oct 24 Javascript
如何用JS/HTML将时间戳转换为“xx天前”的形式
Feb 06 Javascript
javascript cookie的基本操作(添加和删除)
Jul 24 Javascript
Angular2开发环境搭建教程之VS Code
Dec 15 Javascript
原生js实现3D轮播图
Mar 21 Javascript
JavaScript利用键盘码控制div移动
Mar 19 Javascript
如何在node环境实现“get数据解析”代码实例
Jul 03 Javascript
Node 使用express-http-proxy 做api网关的实现
Oct 15 Javascript
vue input输入框关键字筛选检索列表数据展示
Oct 26 #Javascript
vue+elementUI实现表格关键字筛选高亮
Oct 26 #Javascript
Django+Vue实现WebSocket连接的示例代码
May 28 #Javascript
Vue3.0结合bootstrap创建多页面应用
May 28 #Javascript
Vue实现搜索结果高亮显示关键字
May 28 #Javascript
Vue2.x通用编辑组件的封装及应用详解
May 28 #Javascript
JS拖动选择table里的单元格完整实例【基于jQuery】
May 28 #jQuery
You might like
phpMyAdmin 安装教程全攻略
2007/03/19 PHP
PHP学习 变量使用总结
2011/03/24 PHP
php后台多用户权限组思路与实现程序代码分享
2012/02/13 PHP
WordPress中的shortcode短代码功能使用详解
2016/05/17 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
2019/05/08 PHP
PHP检测一个数组有没有定义的方法步骤
2019/07/20 PHP
JavaScript中json对象和string对象之间相互转化
2012/12/26 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
js拆分字符串并将分割的数据放到数组中的方法
2015/05/06 Javascript
jquery捕捉回车键及获取checkbox值与异步请求的方法
2015/12/24 Javascript
第四篇Bootstrap网格系统偏移列和嵌套列
2016/06/21 Javascript
JS快速实现移动端拼图游戏
2016/09/05 Javascript
Javascript中document.referrer隐藏来源的方法
2017/01/16 Javascript
详解Angualr 组件间通信
2017/01/21 Javascript
学习使用Bootstrap输入框、导航、分页等常用组件
2017/05/11 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
2017/07/10 Javascript
jQuery Autocomplete简介_动力节点Java学院整理
2017/07/17 jQuery
移动端效果之Swiper详解
2017/10/09 Javascript
使用Vue-Awesome-Swiper实现旋转叠加轮播效果&amp;平移轮播效果
2019/08/16 Javascript
15分钟上手vue3.0(小结)
2020/05/20 Javascript
Python 流程控制实例代码
2009/09/25 Python
Python正则表达式知识汇总
2017/09/22 Python
Python设计模式之简单工厂模式实例详解
2019/01/22 Python
Django web框架使用url path name详解
2019/04/29 Python
python 协程 gevent原理与用法分析
2019/11/22 Python
PyCharm中关于安装第三方包的三个建议
2020/09/17 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
2020/12/07 Python
Html5实现用户注册自动校验功能实例代码
2016/05/24 HTML / CSS
英国舒适型鞋履品牌:FitFlop
2017/05/17 全球购物
FC-Moto丹麦:欧洲最大的摩托车服装和头盔商店之一
2019/08/20 全球购物
2014幼儿园家长工作总结
2014/11/10 职场文书
小学生毕业评语
2014/12/26 职场文书
供应商食品安全承诺书
2015/04/29 职场文书
何玥事迹观后感
2015/06/16 职场文书
如何写一份具有法律效力的借款协议书?
2019/07/02 职场文书
mysql备份策略的实现(全量备份+增量备份)
2021/07/07 MySQL