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 之 $().hover(func1, funct2)使用方法
Jun 14 Javascript
浅谈javascript 函数属性和方法
Jan 21 Javascript
JavaScript闭包详解
Feb 02 Javascript
js实现的黑背景灰色二级导航菜单效果代码
Aug 24 Javascript
使用jQuery制作基础的Web图片轮播效果
Apr 22 Javascript
JS关闭窗口时产生的事件及用法示例
Aug 20 Javascript
form+iframe解决跨域上传文件的方法
Nov 18 Javascript
JavaScript30 一个月纯 JS 挑战中文指南(英文全集)
Jul 23 Javascript
Js利用prototype自定义数组方法示例
Oct 20 Javascript
深入浅出了解Node.js Streams
May 27 Javascript
浅谈Vue项目骨架屏注入实践
Aug 05 Javascript
vue表单验证之禁止input输入框输入空格
Dec 03 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防盗链代码实例
2014/08/27 PHP
php实现给图片加灰色半透明效果的方法
2014/10/20 PHP
php实现用于验证所有类型的信用卡类
2015/03/24 PHP
基于ThinkPHP删除目录及目录文件函数
2020/10/28 PHP
jQuery asp.net 用json格式返回自定义对象
2010/04/07 Javascript
js验证输入是否为手机号码或电话号码示例
2013/12/30 Javascript
JS控制一个DIV层在指定时间内消失的方法
2014/02/17 Javascript
基于jquery实现复选框全选,反选,全不选等功能
2015/10/16 Javascript
js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解
2019/01/19 Javascript
深入解析koa之中间件流程控制
2019/06/17 Javascript
13 个npm 快速开发技巧(推荐)
2019/07/04 Javascript
vue-cli随机生成port源码的方法
2019/09/02 Javascript
Vue循环中多个input绑定指定v-model实例
2020/08/31 Javascript
[43:35]TI4 循环赛第二日Liquid vs Fnatic
2014/07/11 DOTA
[42:00]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第一场 12.13
2020/12/17 DOTA
介绍Python中的__future__模块
2015/04/27 Python
K-近邻算法的python实现代码分享
2017/12/09 Python
python 实现登录网页的操作方法
2018/05/11 Python
解决Mac安装scrapy失败的问题
2018/06/13 Python
python hook监听事件详解
2018/10/25 Python
python实现简单名片管理系统
2018/11/30 Python
python 提取tuple类型值中json格式的key值方法
2018/12/31 Python
Python Pywavelet 小波阈值实例
2019/01/09 Python
python 列表转为字典的两个小方法(小结)
2019/06/28 Python
python实现简单俄罗斯方块
2020/03/13 Python
埃弗顿足球俱乐部官方网上商店:Everton Direct
2018/01/13 全球购物
Allsole美国/加拿大:英国一家专门出售品牌鞋子的网站
2018/10/21 全球购物
技校毕业生自荐信
2014/06/03 职场文书
大专毕业生自我鉴定范文(2篇)
2014/09/27 职场文书
2014年幼儿园工作总结
2014/11/10 职场文书
2014年法务工作总结
2014/12/11 职场文书
员工年度工作总结2015
2015/05/18 职场文书
网络妈妈观后感
2015/06/08 职场文书
2016年6月份红领巾广播稿
2015/12/21 职场文书
《曾国藩家书》读后感——读家书,立家风
2019/08/21 职场文书