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用select实现日期控件
Jul 17 Javascript
js中unicode转码方法详解
Oct 09 Javascript
JavaScript优化专题之Loading and Execution加载和运行
Jan 20 Javascript
jQuery插件FusionCharts实现的3D柱状图效果实例【附demo源码下载】
Mar 03 Javascript
关于Node.js的events.EventEmitter用法介绍
Apr 01 Javascript
把vue-router和express项目部署到服务器的方法
Feb 21 Javascript
浅谈React中的元素、组件、实例和节点
Feb 27 Javascript
Vue组件全局注册实现警告框的实例详解
Jun 11 Javascript
浅谈React Event实现原理
Sep 20 Javascript
jQuery访问json文件中数据的方法示例
Jan 28 jQuery
微信js-sdk 录音功能的示例代码
Nov 01 Javascript
js实现课堂随机点名系统
Nov 21 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
Windows下XDebug 手工配置与使用说明
2010/07/11 PHP
smarty模板引擎基础知识入门
2015/03/30 PHP
PHP常用工具类大全附全部代码下载
2015/12/07 PHP
静态html文件执行php语句的方法(推荐)
2016/11/21 PHP
php中时间函数date及常用的时间计算
2017/05/12 PHP
php处理抢购类功能的高并发请求
2018/02/08 PHP
浅谈php的TS和NTS的区别
2019/03/13 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
2019/05/14 PHP
PHP递归统计系统中代码行数
2019/09/19 PHP
一些老手都不一定知道的JavaScript技巧
2014/05/06 Javascript
浅谈页面装载js及性能分析方法
2014/12/09 Javascript
AngularJS出现$http异步后台无法获取请求参数问题的解决方法
2016/11/03 Javascript
JS定时器实现数值从0到10来回变化
2016/12/09 Javascript
Bootstrap源码解读网格系统(3)
2016/12/22 Javascript
js指定步长实现单方向匀速运动
2017/07/17 Javascript
详解vue静态资源打包中的坑与解决方案
2018/02/05 Javascript
js设计模式之单例模式原理与用法详解
2019/08/15 Javascript
[00:32]2018DOTA2亚洲邀请赛出场——VP
2018/04/04 DOTA
[05:00]TI9战队采访 - Royal Never Give Up
2019/08/20 DOTA
进一步探究Python的装饰器的运用
2015/05/05 Python
Python下调用Linux的Shell命令的方法
2018/06/12 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
2018/06/13 Python
Django后端发送小程序微信模板消息示例(服务通知)
2019/12/17 Python
Python Selenium安装及环境配置的实现
2020/03/17 Python
解决PDF 转图片时丢文字的一种可能方式
2021/03/04 Python
HTML5中input[type='date']自定义样式与日历校验功能的实现代码
2017/07/11 HTML / CSS
Koral官方网站:女性时尚运动服
2019/04/10 全球购物
公司领导推荐信
2013/11/12 职场文书
2013英文求职信模板范文
2013/11/15 职场文书
领导失职检讨书
2014/02/24 职场文书
《秋游》教学反思
2014/04/24 职场文书
2014年党支部学习材料
2014/05/19 职场文书
名人演讲稿范文
2014/09/16 职场文书
2014年反洗钱工作总结
2014/11/22 职场文书
2019年恭贺升学祝福语集锦
2019/08/15 职场文书
浅谈Python中的正则表达式
2021/06/28 Python