原生JS 实现的input输入时表格过滤操作示例

本文实例讲述了原生JS 实现的input输入时表格过滤操作。分享给大家供大家参考,具体如下:

需求:对input框进行键盘输入后根据输入的内容去匹配表格中指定的数据项,若存在相匹配的则只显示匹配的数据项;

细节处理:监听键盘输入后给一定的缓冲时间避免发生频繁的请求;

解决思路:给个定时器,当键盘开始输入时启动定时器,倘若在指定的时间内都不在进行输入操作,则执行匹配操作,否则取消操作,同时限定输入的字符串大于等于2位数字时再进行匹配操作,使过滤效果更精准一些。

<!--JS -->

var timer = null; //定义定时器
function filterTable(el){
  clearTimeout(timer);
  var oTable = document.getElementById("oTable");
  //获取需要匹配的元素集合
  var firstTdArr = oTable.getElementsByClassName("firstTd");
  if(el.value.length>1){ //限定匹配的字符至少为两位数
    var filterVal = el.value.toUpperCase();
    timer = setTimeout(function(){
      for(var i=0;i<firstTdArr.length;i++){
        //元素集合中存在匹配值时,显示匹配的记录,否则隐藏
        if (firstTdArr[i].innerHTML.toUpperCase().indexOf(filterVal) > -1) {
          firstTdArr[i].parentNode.style.display = "";
        }else{
          firstTdArr[i].parentNode.style.display = "none";
        }
      }
    },500);
  }else{
    //不满足匹配所需字符数量时,恢复匹配之前的模样
    for(var i=0;i<firstTdArr.length;i++){
      firstTdArr[i].parentNode.style.display = "";
    }
  }
}

<!-- HTML -->

<p><input type="text" οnkeyup="filterTable(this)"/></p>
<table id="oTable">
  <tr>
    <th>匹配数据</th>
    <th>数据项一</th>
    <th>数据项二</th>
    <th>数据项三</th>
  </tr>
  <tr>
    <td class="firstTd">JS前端数据多条件筛选</td>
    <td>11过滤table数据</td>
    <td>111过滤table数据</td>
    <td>1111过滤table数据</td>
  </tr>
  <tr>
    <td class="firstTd">程序员不会英语怎么行?</td>
    <td>22过滤table数据</td>
    <td>222过滤table数据</td>
    <td>2222过滤table数据</td>
  </tr>
  <tr>
    <td class="firstTd">前端代码编译后添加过滤</td>
    <td>33过滤table数据</td>
    <td>333过滤table数据</td>
    <td>3333过滤table数据</td>
  </tr>
  <tr>
    <td class="firstTd">大数据学习</td>
    <td>44过滤table数据</td>
    <td>444过滤table数据</td>
    <td>4444过滤table数据</td>
  </tr>
  <tr>
    <td class="firstTd">JS过滤HTML标签</td>
    <td>55过滤table数据</td>
    <td>555过滤table数据</td>
    <td>5555过滤table数据</td>
  </tr>
  <tr>
    <td class="firstTd">大数据你了解多少</td>
    <td>66过滤table数据</td>
    <td>666过滤table数据</td>
    <td>6666过滤table数据</td>
  </tr>
</table>

<!-- CSS3 -->

table{border: 1px solid #ccc;width: 900px;}
table tr:nth-child(odd){background:#F4F4F4;}
table tr:nth-child(even){background:#fff;}

<!-- 效果 -->

感兴趣的朋友可以使用在线HTML/CSS/JavaScript前端代码调试运行工具:http://tools.jb51.net/code/WebCodeRun测试上述代码运行效果。

更多关于JavaScript相关内容可查看本站专题:《JavaScript表格(table)操作技巧大全》、《JavaScript操作DOM技巧总结》、《JavaScript数组操作技巧总结》、《JavaScript遍历算法与技巧总结》、《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript查找算法技巧总结》及《JavaScript错误与调试技巧总结》

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

(0)

相关推荐

  • AngularJS模糊查询功能实现代码(过滤内容下拉菜单排序过滤敏感字符验证判断后添加表格信息)

    注:添加球员的功能无指定技术要求,添加球员的页面也无具体样式要求. 1.实现上图页面所有元素,页面布局规整,跟上图效果一致 2.实现文案显示,按效果显示 3.实现查询,实现查询敏感词过滤,实现查询后列表变化 4.实现倒序,实现正序,下拉列表排序效果都实现 5.按钮背景一致,按钮样式 6.实现添加球员页面,添加球员页面样式,添加球员功能,添加球员必填项判断,添加完球员后能显示在表格内,已存在球员判重. 7.表格样式跟上图样式一致 代码: <!DOCTYPE html> <html lang

  • Javascript 5种方法实现过滤删除前后所有空格

    第一种:循环检查替换 //供使用者调用 function trim(s){ return trimRight(trimLeft(s)); } //去掉左边的空白 function trimLeft(s){ if(s == null) { return ""; } var whitespace = new String(" \t\n\r"); var str = new String(s); if (whitespace.indexOf(str.charAt(0))

  • js过滤HTML标签以及空格的思路及代码

    复制代码 代码如下: function setContent(str) {str = str.replace(/<\/?[^>]*>/g,''); //去除HTML tagstr.value = str.replace(/[ | ]*\n/g,'\n'); //去除行尾空白//str = str.replace(/\n[\s| | ]*\r/g,'\n'); //去除多余空行return str;} 测试的时候发现这段代码不能过滤掉网页中空格字符(即: ).于是自己又改造了一下: 复制代

  • js中过滤特殊字符的正则表达式

    复制代码 代码如下: function stripscript(s) { var pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥--&*()--|{}[]'::""'.,.?]") var rs = ""; for (var i = 0; i < s.length; i++) { rs = rs+s.substr(i, 1).replace(

  • 利用javascript/jquery对上传文件格式过滤的方法

    复制代码 代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <style><!-- .errorInfo{ color:red; padding-left:5px; } --></style><s

  • 用于过滤空白字符的几种常见的js正则表达式pattern

    复制代码 代码如下: var trimInfo = { basic: / / // vb中的简单空白字符过滤 , classic: /\s/ // 传统的js空白字符过滤 , ecmascript5: /[\s\xA0\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/ // ECMAScript 5中对/s的补充定义 , ex: /[\s\xA0\u2028\u2029]/ // 印象中是和js中的标识符或者字符串有关,忘了从哪来的

  • 用js实现过滤script的正则

    function stripscript(s) {      return s.replace(/<script.*?>.*?<\/script>/ig, '');  } 稍微说下,高手飘过 /之间的内容/ 是js正则语句的书写开始与结束 .*?是贪婪的匹配,如果不是贪婪的就是.*匹配任何字符,但用贪婪的就是不包含>的内容 /ig 是不区分大小写和全局替换

  • js限制input只能输入有效的数字(第一个不能是小数点)

    第一种方法:通过字符搜索判断等实现,适合功能增强 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="js/jq.js"></script> </head> <body> <i

  • js特殊字符过滤的示例代码

    复制代码 代码如下: //匹配中文 数字 字母 下划线        var checkInput = function (str) {            var pattern =var pattern = /^[\w\u4e00-\u9fa5]+$/gi;            if(pattern.test(c))            {                return false;            }            return true;       

  • js过滤HTML标签完整实例

    本文实例讲述了js过滤HTML标签的方法.分享给大家供大家参考,具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head&

  • JS敏感词过滤代码

    过滤敏感.不良词汇.本文主要讲述两种方式过滤敏感词汇. 我在这里直接以函数的形式体现出来,也就是说,用的时候直接调用函数即可. 方式一.RegExp() function filter() { // 获取输入框的内容inputContent var inputContent = input.value; // 多个敏感词,这里直接以数组的形式展示出来 var arrMg = ["fuck", "tmd", "他妈的"]; // 显示的内容--sh

随机推荐