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获取指定的cookie的具体实现
Feb 20 Javascript
使用JQuery实现Ctrl+Enter提交表单的方法
Oct 22 Javascript
jQuery插件开发精品教程(让你的jQuery更上一个台阶)
Nov 07 Javascript
深入理解Angular.JS中的Scope继承
Jun 04 Javascript
JavaScript中利用Array filter() 方法压缩稀疏数组
Feb 24 Javascript
ES6 迭代器与可迭代对象的实现
Feb 11 Javascript
一秒学会微信小程序制作table表格
Feb 14 Javascript
微信小程序云开发之使用云数据库
May 17 Javascript
vue-i18n结合Element-ui的配置方法
May 20 Javascript
JS实现数组删除指定元素功能示例
Jun 05 Javascript
微信小程序调用天气接口并且渲染在页面过程详解
Jun 24 Javascript
基于element-ui封装可搜索的懒加载tree组件的实现
May 22 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操作XML作为数据库的类
2010/12/19 PHP
浅谈PHP与C#的值类型指向区别的详解
2013/05/21 PHP
基于PHP读取csv文件内容的详解
2013/06/18 PHP
thinkphp配置连接数据库技巧
2014/12/02 PHP
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
PHP实现全角字符转为半角方法汇总
2015/07/09 PHP
thinkPHP简单导入和使用阿里云OSSsdk的方法
2017/03/15 PHP
删除PHP数组中头部、尾部、任意元素的实现代码
2017/04/10 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
django中的ajax组件教程详解
2018/10/18 PHP
JavaScript高级程序设计
2006/12/29 Javascript
Javascript客户端将指定区域导出到Word、Excel的代码
2008/10/22 Javascript
WordPress 照片lightbox效果的运用几点
2009/06/22 Javascript
浏览器打开层自动缓慢展开收缩实例代码
2013/07/04 Javascript
基于pthread_create,readlink,getpid等函数的学习与总结
2013/07/17 Javascript
js格式化金额可选是否带千分位以及保留精度
2014/01/28 Javascript
2014年最火的Node.JS后端框架推荐
2014/10/27 Javascript
chrome不支持form.submit的解决方案
2015/04/28 Javascript
jQuery筛选数组之grep、each、inArray、map的用法及遍历json对象
2016/06/20 Javascript
require.js配合插件text.js实现最简单的单页应用程序
2016/07/12 Javascript
微信小程序 购物车简单实例
2016/10/24 Javascript
JS判断输入的字符串是否是数字的方法(正则表达式)
2016/11/29 Javascript
mui上拉加载功能实例详解
2017/04/13 Javascript
微信小程序五子棋游戏AI实现方法【附demo源码下载】
2019/02/20 Javascript
ES6基础之展开语法(Spread syntax)
2019/02/21 Javascript
vue 中 beforeRouteEnter 死循环的问题
2019/04/23 Javascript
在Docker上部署Python的Flask框架的教程
2015/04/08 Python
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
2015/04/16 Python
python实现守护进程、守护线程、守护非守护并行
2018/05/05 Python
python如何制作缩略图
2019/04/30 Python
pandas实现to_sql将DataFrame保存到数据库中
2019/07/03 Python
美国美妆网站:B-Glowing
2016/10/12 全球购物
Booking.com亚太地区:Booking.com APAC
2020/02/07 全球购物
人力资源行政经理自我评价
2013/10/23 职场文书
学校办公室主任职责
2013/12/27 职场文书
pytest进阶教程之fixture函数详解
2021/03/29 Python