JavaScript实现的搜索及高亮显示功能示例


Posted in Javascript onAugust 14, 2017

本文实例讲述了JavaScript实现的搜索及高亮显示功能。分享给大家供大家参考,具体如下:

情景: 用来筛选列表中的数据, 由于单条数据很简短, 没有用php+mysql去实现筛选功能, 只用javascript进行筛选, 匹配的高亮, 或者将不匹配的隐藏掉

效果图:

JavaScript实现的搜索及高亮显示功能示例

html:

<div class="contracts-header">名称: <input type="text" value="" id="search_contract_name"></div>
<div class="contracts-header">代码: <input type="text" value="" id="search_contract_code" placeholder="不区分大小写"></div>
<div class="contracts-header"><button onclick="search()">查找</button></div>
<div id="contracts-list">
  <ul>
  <li><input type="checkbox" name="contract[]" value="code|name" /><span>name(code)</span></li>
  <li><input type="checkbox" name="contract[]" value="code|name" /><span>name(code)</span></li>
  </ul>
</div>

javascript:

function search()
{
  var search_contract_name = $("#search_contract_name").val();
  var search_contract_code = $("#search_contract_code").val();
  if (search_contract_name && search_contract_code) { //两个输入框都有值
    search_contract_code = search_contract_code.toLowerCase(); //不区分大小写, 全部转换为小写, 下同
    $("input[name='contract[]']").each(
        function () {
          var code_name = this.value;
          var search_code = code_name.toLowerCase().indexOf(search_contract_code); 
          var search_name = code_name.toLowerCase().indexOf(search_contract_name);
          if (search_code >=0 && search_name >=0 ) {
            // this.nextSibling.style.backgroundColor = "#FFDEAD"; //高亮匹配到的
            this.parentNode.style.display = 'block';
          } else {
            // this.nextSibling.style.backgroundColor = "";
            this.parentNode.style.display = 'none'; //隐藏不匹配的
          }
        }
    );
  } else if(search_contract_name || search_contract_code) { //只有一个输入框有值
    search_contract_name = search_contract_name.length ? search_contract_name : 'xxx'; //默认为xxx是因为不可能存在xxx
    search_contract_code = search_contract_code.length ? search_contract_code.toLowerCase() : 'xxx';
    $("input[name='contract[]']").each(
      function () {
        var code_name = this.value;
        var search_code = code_name.toLowerCase().indexOf(search_contract_code);
        var search_name = code_name.toLowerCase().indexOf(search_contract_name);
        if (search_code >=0 || search_name >=0 ) {
          // this.nextSibling.style.backgroundColor = "#FFDEAD";
          this.parentNode.style.display = 'block';
        } else {
          // this.nextSibling.style.backgroundColor = "";
          this.parentNode.style.display = 'none';
        }
      }
    );
  }
}

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
一个可以显示阴历的JS代码
Mar 05 Javascript
Jquery 插件学习实例1 插件制作说明与tableUI优化
Apr 02 Javascript
jquery 圆形旋转图片滚动切换效果
Jan 19 Javascript
HTML页面滚动时获取离页面顶部的距离2种实现方法
Sep 05 Javascript
JQuery中form验证出错信息的查看方法
Oct 08 Javascript
raphael.js绘制中国地图 地图绘制方法
Feb 12 Javascript
JS中setTimeout的巧妙用法前端函数节流
Mar 24 Javascript
angular2实现统一的http请求头方法
Aug 13 Javascript
Vue.js实现表格渲染的方法
Sep 07 Javascript
微信小程序中的店铺评分组件及vue中用svg实现的评分显示组件
Nov 16 Javascript
vue生命周期的探索
Apr 03 Javascript
JavaScript Window浏览器对象模型原理解析
May 30 Javascript
带你了解session和cookie作用原理区别和用法
Aug 14 #Javascript
react.js使用webpack搭配环境的入门教程
Aug 14 #Javascript
JS原生数据双向绑定实现代码
Aug 14 #Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
Aug 14 #jQuery
关于在mongoose中填充外键的方法详解
Aug 14 #Javascript
JavaScript变量类型以及变量作用域详解
Aug 14 #Javascript
jQuery:unbind方法的使用详解
Aug 14 #jQuery
You might like
php短网址和数字之间相互转换的方法
2015/03/13 PHP
JavaScript的面向对象方法以及差别
2008/03/31 Javascript
JavaScript 原型链学习总结
2010/10/29 Javascript
Iframe自适应高度绝对好使的代码 兼容IE,遨游,火狐
2011/01/27 Javascript
javascript 函数声明与函数表达式的区别介绍
2013/10/05 Javascript
HTTP 304错误的详细讲解
2013/11/13 Javascript
jQuery分组选择器用法实例
2014/12/23 Javascript
js中for in语句的用法讲解
2015/04/24 Javascript
js中的内部属性与delete操作符介绍
2015/08/10 Javascript
vue 指定组件缓存实例详解
2018/04/01 Javascript
vue项目出现页面空白的解决方案
2019/10/31 Javascript
vue props 单项数据流实例分享
2020/02/16 Javascript
解决removeEventListener 无法清除监听的问题
2020/10/30 Javascript
用vite搭建vue3应用的实现方法
2021/02/22 Vue.js
[01:12]DOTA2 2015年秋季互动指南
2015/11/10 DOTA
[55:32]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第二场
2018/04/05 DOTA
[48:37]EG vs OG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[56:42]VP vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python 读取DICOM头文件的实例
2018/05/07 Python
python使用pipeline批量读写redis的方法
2019/02/18 Python
在SQLite-Python中实现返回、查询中文字段的方法
2019/07/17 Python
python 并发下载器实现方法示例
2019/11/22 Python
python爬虫实现获取下一页代码
2020/03/13 Python
Pycharm的Available Packages为空的解决方法
2020/09/18 Python
详解python日志输出使用配置文件格式
2021/02/10 Python
纯css实现照片墙3D效果的示例代码
2017/11/13 HTML / CSS
浅谈HTML5 defer和async的区别
2016/06/07 HTML / CSS
J2EE相关知识面试题
2013/08/26 面试题
服务生自我鉴定
2014/01/22 职场文书
十佳大学生事迹材料
2014/01/29 职场文书
金砖之国观后感
2015/06/11 职场文书
CSS3实现列表无限滚动/轮播效果
2021/06/23 HTML / CSS
Django REST framework 限流功能的使用
2021/06/24 Python
pandas求平均数和中位数的方法实例
2021/08/04 Python
自动在Windows中运行Python脚本并定时触发功能实现
2021/09/04 Python
UNION CREATIVE《Re:从零开始的异世界生活》雷姆手办
2022/03/20 日漫