Vue 实现检索关键字高亮

需求:检索列表,匹配搜索关键字部分高亮

首先判断返回字符中是否包括该关键字,如果包括则进行样式修改。

效果图:

简略代码:

<template>
    //搜索框
    <div>
        <el-col :span="7">
            <input
             class="searchDate"
             v-model="searchcontent"
             placeholder="请输入内容"
             @keyup.enter="getDataList"></input>
        </el-col>
        <el-col :span="1" :pull="2" @click.native="getDataList($event)">
            <img style="margin-top: 10px;cursor: pointer;" src="../../../public/img/main/mryt_fdj.png" alt="" >
        </el-col>
    </div>
    //循环加载的列表
    <div v-for="(item,index) in dataList" :key="item.id">
        <span v-html="item.title"></span>
    </div>
</template>
<script>
  import {fetchNotice} from '@/api/policy/home'
  export default {
    data() {
      return {
        searchcontent:'',//搜索内容
        dataList: [] ,//信息列表
      }
    },
    created() {
      this.getDataList();
    },
    methods: {
      getDataList(e) {
        fetchNotice(Object.assign({
          searchContent : this.searchcontent,
        })).then(response => {
          this.dataList = response.data.data.records
          this.totalPage = response.data.data.total
          //如果有搜索关键字 进行高亮筛选
          if(this.searchcontent != '') {
            for(let i in this.dataList) {
             //高亮替换
             this.dataList[i].title = this.showData(this.dataList[i].title)
            }
          }
        })
      },
      // 筛选变色 如果搜索结果记录包含关键字,那么修改样式
      showData(val) {
       if (this.checkParam(val,this.searchcontent)) {
        //以 关键词 去分隔字符串 形成一个数组
        let arrry = val.split(this.searchcontent)

        //把数组元素用固定分隔符(此处为已添加高亮的关键词)拼接为一个完整字符串
        val = arrry.join('<font color="#ff0000">' + this.searchcontent + '</font>');
        return val
       } else {
        return val //不做任何修改
       }
      },
      //判断搜索记录是否包含某个关键字
      checkParam(val,param){
        if (val.indexOf(param) !== -1 && param !== ''){
         return true;
        }else {
         return false
        }
      },
    }
  }
</script>

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值