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 相关文章推荐
网页中实现浏览器的最大,最小化和关闭按钮
Mar 12 Javascript
javascript面向对象之二 命名空间
Feb 08 Javascript
javascript学习笔记(八) js内置对象
Jun 19 Javascript
JS注释所产生的bug 即使注释也会执行
Nov 19 Javascript
Javascript 动态改变imput type属性
Nov 01 Javascript
js实现从左向右滑动式轮播图效果
Jul 07 Javascript
JS高级技巧(简洁版)
Jul 29 Javascript
解决JavaScript layui 下拉框不显示的问题
Aug 14 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
May 01 Javascript
javascript严格模式详解(含严格模式与非严格模式的区别)
Nov 12 Javascript
JS实现手写 forEach算法示例
Apr 29 Javascript
vue3.0实现插件封装
Dec 14 Vue.js
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
利用递归把多维数组转为一维数组的函数
2006/10/09 PHP
php配合jquery实现增删操作具体实例
2013/12/12 PHP
PHP_Cooikes不同页面无法传递的解决方法
2014/03/07 PHP
一个完整的PHP类包含的七种语法说明
2015/06/04 PHP
PHP中类的自动加载的方法
2017/03/17 PHP
javascript 三种编解码方式
2010/02/01 Javascript
this,this,再次讨论javascript中的this,超全面(经典)
2016/01/05 Javascript
AngularJS通过$sce输出html的方法
2016/09/22 Javascript
jquery+css3问卷答题卡翻页动画效果示例
2016/10/26 Javascript
详解vue.js组件化开发实践
2016/12/14 Javascript
ExtJs异步无法向外传值和赋值的完美解决办法
2017/06/14 Javascript
详解vue服务端渲染(SSR)初探
2017/06/19 Javascript
详解vue 项目白屏解决方案
2018/10/31 Javascript
[02:21]2018完美盛典章节片——初心
2018/12/17 DOTA
使用Python的Twisted框架构建非阻塞下载程序的实例教程
2016/05/25 Python
TensorFlow 模型载入方法汇总(小结)
2018/06/19 Python
Python批量生成幻影坦克图片实例代码
2019/06/04 Python
python程序 创建多线程过程详解
2019/09/23 Python
Python实现一个简单的递归下降分析器
2020/08/01 Python
分享unittest单元测试框架中几种常用的用例加载方法
2020/12/02 Python
详解HTML5中的Communication API基本使用方法
2016/01/29 HTML / CSS
阿迪达斯新加坡官方网站:adidas新加坡
2019/12/06 全球购物
EM Cosmetics官网:由彩妆大神Michelle Phan创办的独立品牌
2020/04/27 全球购物
linux面试题参考答案(8)
2015/08/11 面试题
Linux文件操作命令都有哪些
2015/02/27 面试题
中软国际Java程序员笔试题
2014/07/19 面试题
销售员自我评价怎么写
2013/09/19 职场文书
数控专业毕业生求职信范文
2013/09/21 职场文书
小区门卫工作职责
2013/12/14 职场文书
运动员获奖感言
2014/08/15 职场文书
卖车协议书范例
2014/09/16 职场文书
2014年消防工作总结
2014/11/21 职场文书
机修车间主任岗位职责
2015/04/08 职场文书
通知的写法
2015/04/23 职场文书
初中教务主任竞聘演讲稿(范文)
2019/08/20 职场文书
2019年作为一名实习生的述职报告
2019/09/29 职场文书