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 相关文章推荐
jQuery中json对象的复制方式介绍(数组及对象)
Jun 08 Javascript
javascript实现原生ajax的几种方法介绍
Sep 21 Javascript
js验证IP及子网掩码的合法性有效性示例
Apr 30 Javascript
javascript初学者常用技巧
Sep 02 Javascript
JavaScript脚本判断蜘蛛来源的方法
Sep 22 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
Mar 17 Javascript
javascript计算渐变颜色的实例
Sep 22 Javascript
解决JavaScript layui 下拉框不显示的问题
Aug 14 Javascript
vue监听input标签的value值方法
Aug 27 Javascript
原生js实现随机点名功能
Nov 05 Javascript
有趣的JavaScript隐式类型转换操作实例分析
May 02 Javascript
基于JavaScript实现年月日三级联动
Jun 22 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
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
PHP中数组转换为SimpleXML教程
2019/01/27 PHP
Three.js源码阅读笔记(光照部分)
2012/12/27 Javascript
js跳转页面方法总结
2014/01/29 Javascript
js函数参数设置默认值的一种变通实现方法
2014/05/26 Javascript
一个支付页面DEMO附截图
2014/07/22 Javascript
js实现用户注册协议倒计时的方法
2015/01/21 Javascript
javaScript实现可缩放的显示区效果代码
2015/10/26 Javascript
jQuery层级选择器实例代码
2017/02/06 Javascript
EsLint入门学习教程
2017/02/17 Javascript
简单谈谈axios中的get,post方法
2017/06/25 Javascript
Vuex提升学习篇
2018/01/11 Javascript
Vue使用枚举类型实现HTML下拉框步骤详解
2018/02/05 Javascript
详解开发react应用最好用的脚手架 create-react-app
2018/04/24 Javascript
9102了,你还不会移动端真机调试吗
2019/03/25 Javascript
vue eslint简要配置教程详解
2019/07/26 Javascript
VUE前后端学习tab写法实例
2019/08/06 Javascript
vue项目从node8.x升级到12.x后的问题解决
2019/10/25 Javascript
node.js文件操作系统实例详解
2019/11/05 Javascript
浅析Vue 防抖与节流的使用
2019/11/14 Javascript
Vue检测屏幕变化来改变不同的charts样式实例
2020/10/26 Javascript
Python中turtle作图示例
2017/11/15 Python
Python 保存矩阵为Excel的实现方法
2019/01/28 Python
python使用百度文字识别功能方法详解
2019/07/23 Python
Python开发之基于模板匹配的信用卡数字识别功能
2020/01/13 Python
安装并免费使用Pycharm专业版(学生/教师)
2020/09/24 Python
canvas使用注意点总结
2013/07/19 HTML / CSS
Sarenza德国:法国最大的时尚鞋和包包网上商店
2019/06/08 全球购物
.NET概念性的面试题
2012/02/29 面试题
教师一帮一活动总结
2014/07/08 职场文书
转让协议书范本
2014/09/13 职场文书
2014年个人委托书范本
2014/10/13 职场文书
甲午大海战观后感
2015/06/02 职场文书
Python还能这么玩之用Python修改了班花的开机密码
2021/06/04 Python
nginx配置之并发频次限制
2022/04/18 Servers
MySQL添加索引特点及优化问题
2022/07/23 MySQL