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 30 Javascript
javascript面向对象之二 命名空间
Feb 08 Javascript
从jquery的过滤器.filter()方法想到的
Sep 29 Javascript
JavaScript事件委托技术实例分析
Feb 06 Javascript
jQuery实现限制textarea文本框输入字符数量的方法
May 28 Javascript
学习JavaScript设计模式(策略模式)
Nov 26 Javascript
js操作XML文件的实现方法兼容IE与FireFox
Jun 25 Javascript
Javascript农历与公历相互转换的简单实例
Oct 09 Javascript
JS打开摄像头并截图上传示例
Feb 18 Javascript
详解jquery选择器的原理
Aug 01 jQuery
angular内置provider之$compileProvider详解
Sep 27 Javascript
Vue2.0搭建脚手架
Mar 13 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
PHP语法速查表
2007/01/02 PHP
PHP下打开URL地址的几种方法小结
2010/05/16 PHP
在PHP中实现Javascript的escape()函数代码
2010/08/08 PHP
php使用websocket示例详解
2014/03/12 PHP
ThinkPHP连接数据库及主从数据库的设置教程
2014/08/22 PHP
JAVASCRIPT对象及属性
2007/02/13 Javascript
找到了一篇jQuery与Prototype并存的冲突的解决方法
2007/08/29 Javascript
javascript获取所有同类checkbox选项(实例代码)
2013/11/07 Javascript
解决jquery1.9不支持browser对象的问题
2013/11/13 Javascript
javascript使用数组的push方法完成快速排序
2014/09/15 Javascript
jQuery插件slicebox实现3D动画图片轮播切换特效
2015/04/12 Javascript
使用Javascript写的2048小游戏
2015/11/25 Javascript
深入理解MVC中的时间js格式化
2016/05/19 Javascript
JavaScript实现url参数转成json形式
2016/09/25 Javascript
JS实现鼠标移上去显示图片或微信二维码
2016/12/14 Javascript
vue 通过下拉框组件学习vue中的父子通讯
2017/12/19 Javascript
Vue在页面数据渲染完成之后的调用方法
2018/09/11 Javascript
javascript实现抢购倒计时程序
2019/08/26 Javascript
在JavaScript中查找字符串中最长单词的三种方法(推荐)
2021/01/18 Javascript
python聊天程序实例代码分享
2013/11/18 Python
Python安装Imaging报错:The _imaging C module is not installed问题解决方法
2014/08/22 Python
python编程实现12306的一个小爬虫实例
2017/12/27 Python
Python判断字符串是否为空和null方法实例
2020/04/26 Python
Python不支持 i ++ 语法的原因解析
2020/07/22 Python
html5绘制时钟动画
2014/12/15 HTML / CSS
新加坡航空官方网站:Singapore Airlines
2016/10/13 全球购物
StubHub西班牙:购买和出售全球活动门票
2017/06/05 全球购物
GIVENCHY纪梵希官方旗舰店:高定彩妆与贵族护肤品
2018/04/16 全球购物
Maison Lab荷兰:名牌Outlet购物
2018/08/10 全球购物
Flesh Beauty官网:露华浓集团旗下彩妆品牌
2021/02/15 全球购物
普通PHP程序员笔试题
2016/01/01 面试题
高一学年自我鉴定范文(3篇)
2014/09/26 职场文书
拖欠货款起诉状
2015/05/20 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
python cv2图像质量压缩的算法示例
2021/06/04 Python
实体类或对象序列化时,忽略为空属性的操作
2021/06/30 Java/Android