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模拟多线程
Feb 07 Javascript
JavaScript具有类似Lambda表达式编程能力的代码(改进版)
Sep 14 Javascript
浅析Js中的单引号与双引号问题
Nov 06 Javascript
使用HTML+CSS+JS制作简单的网页菜单界面
Jul 27 Javascript
ES6记录异步函数的执行时间详解
Aug 31 Javascript
Javascript使用function创建类的两种方法(推荐)
Nov 19 Javascript
JS使用正则实现去掉字符串左右空格的方法
Dec 27 Javascript
JavaScript对象_动力节点Java学院整理
Jun 23 Javascript
详解Vue项目引入CreateJS的方法(亲测可用)
May 30 Javascript
Node.js+Vue脚手架环境搭建的方法步骤
Mar 08 Javascript
Js实现粘贴上传图片的原理及示例
Dec 09 Javascript
JavaScript仿京东轮播图效果
Feb 25 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
十大“创意”战术!
2020/03/04 星际争霸
收音机史话 - 1960年代前后的DIY
2021/03/02 无线电
PHP与javascript实现变量交互的示例代码
2013/07/23 PHP
PHP实现微信网页授权开发教程
2016/01/19 PHP
laravel框架如何设置公共头和公共尾
2019/10/22 PHP
js跨域和ajax 跨域问题的实现思路
2009/09/05 Javascript
Jquery为单选框checkbox绑定单击click事件
2012/12/18 Javascript
当鼠标移动时出现特效的JQuery代码
2013/11/08 Javascript
悬浮数字的实现案例
2014/02/19 Javascript
jQuery判断checkbox是否选中的3种方法
2014/08/12 Javascript
AngularJS通过$sce输出html的方法
2016/09/22 Javascript
js document.getElementsByClassName的使用介绍与自定义函数
2016/11/25 Javascript
微信小程序图片选择区域裁剪实现方法
2017/12/02 Javascript
Vue精简版风格概述
2018/01/30 Javascript
JavaScript 九种跨域方式实现原理
2019/02/11 Javascript
你不可不知的Vue.js列表渲染详解
2019/10/01 Javascript
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
跟老齐学Python之编写类之二方法
2014/10/11 Python
python使用post提交数据到远程url的方法
2015/04/29 Python
使用C#配合ArcGIS Engine进行地理信息系统开发
2016/02/19 Python
深入理解python中的浅拷贝和深拷贝
2016/05/30 Python
Python 安装setuptools和pip工具操作方法(必看)
2017/05/22 Python
Python进程间通信 multiProcessing Queue队列实现详解
2019/09/23 Python
python装饰器代替set get方法实例
2019/12/19 Python
python面向对象之类属性和类方法案例分析
2019/12/30 Python
python3爬虫中多线程进行解锁操作实例
2020/11/25 Python
伦敦时尚生活的缩影:LN-CC
2017/01/24 全球购物
80年代复古T恤:TruffleShuffle
2018/07/02 全球购物
英国二手iPhone、音乐、电影和游戏商店:musicMagpie
2018/10/26 全球购物
英国家庭家具、照明和花园家具购物网站:Furniture123
2018/12/31 全球购物
值传递还是引用传递
2015/02/08 面试题
超市促销实习自我鉴定
2013/09/23 职场文书
实习求职信
2013/12/01 职场文书
保护水资源的标语
2014/06/17 职场文书
小学生运动会报道稿
2014/09/12 职场文书
2014年计划生育协会工作总结
2014/11/14 职场文书