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 相关文章推荐
JavaScript 拾漏补遗
Dec 27 Javascript
js加载之使用DOM方法动态加载Javascript文件
Nov 08 Javascript
js购物车实现思路及代码(个人感觉不错)
Dec 23 Javascript
使用原生js封装webapp滑动效果(惯性滑动、滑动回弹)
May 06 Javascript
Javascript 函数parseInt()转换时出现bug问题
May 20 Javascript
JavaScript实现关键字高亮功能
Nov 12 Javascript
js编写的treeview使用方法
Nov 11 Javascript
详谈js模块化规范
Jul 07 Javascript
vue结合Echarts实现点击高亮效果的示例
Mar 17 Javascript
jQuery操作attr、prop、val()/text()/html()、class属性
May 23 jQuery
基于iview-admin实现动态路由的示例代码
Oct 02 Javascript
Vue检测屏幕变化来改变不同的charts样式实例
Oct 26 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
人工智能开始玩《星际争霸2》 你的操作跟得上吗?
2017/08/11 星际争霸
PHP中用正则表达式清除字符串的空白
2011/01/17 PHP
PHP教程之PHP中shell脚本的使用方法分享
2012/02/23 PHP
php中namespace use用法实例分析
2016/01/22 PHP
PHP+HTML+JavaScript+Css实现简单爬虫开发
2016/03/28 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
js 函数调用模式小结
2011/12/26 Javascript
js中用window.open()打开多个窗口的name问题
2014/03/13 Javascript
js实现正方形颜色从下往上升的效果
2014/08/04 Javascript
node.js中的console.assert方法使用说明
2014/12/10 Javascript
详解JavaScript中数组的相关知识
2015/07/29 Javascript
jquery实现网页的页面平滑滚动效果代码
2015/11/02 Javascript
jquery html5 视频播放控制代码
2016/11/06 Javascript
JavaScript获取服务器端时间的方法
2016/11/29 Javascript
jquery实现百叶窗效果
2017/01/12 Javascript
Vue.js学习示例分享
2017/02/05 Javascript
JS中的作用域链
2017/03/01 Javascript
vue基本使用--refs获取组件或元素的实例
2019/11/07 Javascript
[35:26]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第三局
2016/02/26 DOTA
Python把csv数据写入list和字典类型的变量脚本方法
2018/06/15 Python
Python中的heapq模块源码详析
2019/01/08 Python
解决django后台样式丢失,css资源加载失败的问题
2019/06/11 Python
详解PANDAS 数据合并与重塑(join/merge篇)
2019/07/09 Python
PyQt5+Caffe+Opencv搭建人脸识别登录界面
2019/08/28 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
2020/01/25 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
2020/03/19 Python
瑞典时尚服装购物网站:Miinto.se
2017/10/30 全球购物
意大利中国电子产品购物网站:Geekmall.com
2019/09/30 全球购物
英国名牌男装店:Standout
2021/02/17 全球购物
PHP开发工程师面试问题集锦
2012/11/01 面试题
数组越界问题
2015/10/21 面试题
大专计算机个人求职的自我评价
2013/10/21 职场文书
班长岗位职责
2013/11/10 职场文书
数学教研活动总结
2014/07/02 职场文书
酒店收银员岗位职责
2015/04/07 职场文书
2015年学校总务处工作总结
2015/05/19 职场文书