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 相关文章推荐
jQuery powerFloat万能浮动层下拉层插件使用介绍
Dec 27 Javascript
jQuery实战之品牌展示列表效果
Apr 10 Javascript
Javascript学习笔记之 对象篇(一) : 对象的使用和属性
Jun 24 Javascript
JS 获取鼠标左右键的键值方法
Oct 11 Javascript
JavaScript中的style.cssText使用教程
Nov 06 Javascript
jquery事件的ready()方法使用详解
Nov 11 Javascript
jQuery移动端图片上传组件
Jun 12 Javascript
jQuery模拟淘宝购物车功能
Feb 27 Javascript
vue中本地静态图片路径写法
Mar 06 Javascript
使用ThinkJs搭建微信中控服务的实现方法
Aug 08 Javascript
使用webpack搭建pixi.js开发环境
Feb 12 Javascript
在HTML中使用JavaScript的两种方法
Dec 24 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
提高PHP编程效率的53个要点(经验小结)
2010/09/04 PHP
php中二分法查找算法实例分析
2016/09/22 PHP
PHP实现网站应用微信登录功能详解
2019/04/11 PHP
setTimeout 不断吐食CPU的问题分析
2009/04/01 Javascript
指定位置如果有图片显示图片,无图片显示广告的JS
2010/06/05 Javascript
16个最流行的JavaScript框架[推荐]
2011/05/29 Javascript
javascript的console.log()用法小结
2012/05/31 Javascript
使用CSS样式position:fixed水平滚动的方法
2014/02/19 Javascript
jQuery简单实现iframe的高度根据页面内容自适应的方法
2016/08/01 Javascript
Vue自定义指令介绍(2)
2016/12/08 Javascript
详解Vue 方法与事件处理器
2017/06/20 Javascript
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
2017/06/29 Javascript
AngularJS实现注册表单验证功能
2017/10/16 Javascript
layui框架table 数据表格的方法级渲染详解
2018/08/19 Javascript
node全局变量__dirname与__filename的区别
2019/01/14 Javascript
使用原生js编写一个简单的框选功能方法
2019/05/13 Javascript
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
2019/02/27 Python
如何使用Python实现自动化水军评论
2019/06/26 Python
Django 重写用户模型的实现
2019/07/29 Python
python 中的paramiko模块简介及安装过程
2020/02/29 Python
Python运算符+与+=的方法实例
2021/02/18 Python
CSS3+Sprite实现僵尸行走动画特效源码
2016/01/27 HTML / CSS
canvas绘制太极图的实现示例
2020/04/29 HTML / CSS
华为旗下电子商务平台:华为商城
2016/08/06 全球购物
德国知名健康零食网上商店:Seeberger
2017/07/27 全球购物
法国房车租赁网站:Yescapa
2019/08/26 全球购物
得到Class的三个过程是什么
2012/08/10 面试题
JRE、JDK、JVM之间的关系怎样
2012/05/16 面试题
大学生农村教师实习自我鉴定
2013/09/21 职场文书
护士进修自我鉴定
2014/02/07 职场文书
2014庆六一活动方案
2014/03/02 职场文书
2014年中秋节活动总结
2014/08/29 职场文书
房屋买卖协议书范本
2014/09/27 职场文书
2014年扫黄打非工作总结
2014/12/03 职场文书
反邪教警示教育活动总结
2015/05/09 职场文书
ECharts transform数据转换和dataZoom在项目中使用
2022/12/24 Javascript