原生JS 实现的input输入时表格过滤
2018-01-24 20:04
323 查看
需求:对input框进行键盘输入后根据输入的内容去匹配表格中指定的数据项,若存在相匹配的则只显示匹配的数据项;
细节处理:监听键盘输入后给一定的缓冲时间避免发生频繁的请求;
解决思路:给个定时器,当键盘开始输入时启动定时器,倘若在指定的时间内都不在进行输入操作,则执行匹配操作,否则取消操作,同时限定输入的字符串大于等于2位数字时再进行匹配操作,使过滤效果更精准一些。
<!--JS -->
<!-- HTML -->
<!-- CSS3 -->
<!-- 效果 -->
细节处理:监听键盘输入后给一定的缓冲时间避免发生频繁的请求;
解决思路:给个定时器,当键盘开始输入时启动定时器,倘若在指定的时间内都不在进行输入操作,则执行匹配操作,否则取消操作,同时限定输入的字符串大于等于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" onkeyup="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< b467 /span>> </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;}
<!-- 效果 -->
相关文章推荐
- 原生JS实现table数据,转化为EXCEL表格展现
- js获取input标签的输入值实现代码
- 原生JS实现table数据,转化为EXCEL表格展现
- js实现input输入框只能输入数字的功能
- js实现input中输入数字,控制每四位加一个空格(银行卡号格式)
- 原生js实现密码输入框值的显示隐藏
- js实现select组件的选择输入过滤代码
- js实现在编辑框input下根据输入内容显示匹配内容的下拉列表(一)
- js实现input输入框只能输入数字的功能(完美测试通过)
- js实现input输入框只能输入数字的功能(完美测试通过)
- jquery.fastLiveFilter.js实现输入自动过滤的方法
- 原生js实现对select下拉列表的内容过滤
- js实现在编辑框input下根据输入内容显示匹配内容的下拉列表(二)
- input输入过滤js
- js获取input标签的输入值实现代码
- jquery/js实现文本框根据输入内容input,textarea自适应高度
- js实现文本框或文本域在用户输入时(oninput)触发事件,操作元素
- 用Js Dom实现通过用户输入行数和列数,生成一个表格
- 原生js实时监听input、textarea输入
- 使用原生js和jQuery实现表格的隔行变色