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键盘
May 02 Javascript
Prototype Selector对象学习
Jul 23 Javascript
JavaScript中各种编码解码函数的区别和注意事项
Aug 19 Javascript
js简单网速测试方法完整实例
Dec 15 Javascript
第五章之BootStrap 栅格系统
Apr 25 Javascript
js验证真实姓名与身份证号,手机号的简单实例
Jul 18 Javascript
es7学习教程之Decorators(修饰器)详解
Jul 21 Javascript
基于IView中on-change属性的使用详解
Mar 15 Javascript
Vue2实时监听表单变化的示例讲解
Aug 30 Javascript
jQuery解析json格式数据示例
Sep 01 jQuery
json前后端数据交互相关代码
Sep 19 Javascript
快速解决layui弹窗按enter键不停弹窗的问题
Sep 18 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
linux下使用ThinkPHP需要注意大小写导致的问题
2011/08/02 PHP
用Simple Excel导出xls实现方法
2012/12/06 PHP
解析dedecms空间迁移步骤详解
2013/05/15 PHP
PHP中的插件机制原理和实例
2014/07/08 PHP
php发送邮件的问题详解
2015/06/22 PHP
详解Yii2.0 rules验证规则集合
2017/03/21 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
2020/01/07 PHP
一段实时更新的时间代码
2006/07/07 Javascript
prototype1.4中文手册
2006/09/22 Javascript
jquery ready(fn)事件使用介绍
2013/08/21 Javascript
jquery中交替点击事件toggle方法的使用示例
2013/12/08 Javascript
JQuery1.8 判断元素是否绑定事件的方法
2014/07/10 Javascript
在JavaScript里防止事件函数高频触发和高频调用的方法
2014/09/06 Javascript
在JavaScript应用中使用RequireJS来实现延迟加载
2015/07/01 Javascript
数据分析软件之FineReport教程:[5]参数界面JS(全)
2015/08/13 Javascript
JS实现弹性漂浮效果的广告代码
2015/09/02 Javascript
理解JS事件循环
2016/01/07 Javascript
JavaScript学习笔记整理_用于模式匹配的String方法
2016/09/19 Javascript
js判断输入框不能为空格或null值的实现方法
2018/03/02 Javascript
layui的select联动实现代码
2019/09/28 Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
2020/02/14 Javascript
微信小程序吸底区域适配iPhoneX的实现
2020/04/09 Javascript
vue 使用原生组件上传图片的实例
2020/09/08 Javascript
Python中decorator使用实例
2015/04/14 Python
Python输出PowerPoint(ppt)文件中全部文字信息的方法
2015/04/28 Python
批处理与python代码混合编程的方法
2016/05/19 Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
2018/03/13 Python
python调用OpenCV实现人脸识别功能
2018/05/25 Python
python递归函数绘制分形树的方法
2018/06/22 Python
python的中异常处理机制
2018/08/30 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
2019/08/23 Python
Python循环实现n的全排列功能
2019/09/16 Python
Python单元测试与测试用例简析
2019/11/09 Python
python打印n位数“水仙花数”(实例代码)
2019/12/25 Python
个人师德师风自我剖析材料
2014/09/29 职场文书
标准版个人借条怎么写?以及什么是借条?
2019/08/28 职场文书