javascript - 过滤表不工作

标签 javascript jquery

您好,目前我有这个表过滤器代码,您可以尝试 this fiddle 。

<!DOCTYPE html>
<html lang="en">
   <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <meta name="viewport" content="width=device-width, initial-scale=1.0" />
      <script src="../js/vendor/jquery.js"></script>
      <script>
         (function(document) {
          'use strict';

          var LightTableFilter = (function(Arr) {

              var _input;

              function _onInputEvent(e) {
                  _input = e.target;
                  var tables = document.getElementsByClassName(_input.getAttribute('data-table'));
                  Arr.forEach.call(tables, function(table) {
                      Arr.forEach.call(table.tBodies, function(tbody) {
                          Arr.forEach.call(tbody.rows, _filter);
                      });
                  });
              }

              function _filter(row) {
                  var text = row.textContent.toLowerCase(),
                      val = _input.value.toLowerCase();
                  row.style.display = text.indexOf(val) === -1 ? 'none' : 'table-row';
              }

              return {
                  init: function() {
                      var inputs = document.getElementsByClassName('light-table-filter');
                      Arr.forEach.call(inputs, function(input) {
                          input.oninput = _onInputEvent;
                      });
                  }
              };
          })(Array.prototype);

          document.addEventListener('readystatechange', function() {
              if (document.readyState === 'complete') {
                  LightTableFilter.init();
              }
          });

         })(document);


         $(document).ready(function() {
         $('a').click(function(e) {
          e.preventDefault();
          var text = $(this).text();
          $('input[type=search]').val(text);
          $( "#right-label" ).focus();
         });
         });
      </script>
   </head>
   <body>
      Search: <input type="search" class="light-table-filter" data-table="order-table" id="right-label" placeholder="Filter"> 
      <a href="#">Active</a> | <a href="#">Inactive</a> | <a href="#">Banned</a>
      <table>
      <thead>
         <tr>
            <th>Name</th>
            <th>Contact Number</th>
            <th>Course</th>
            <th>Status</th>
         </tr>
      </thead>
      <tbody>
         <tr>
            <td>Robert</td>
            <td>09054848</td>
            <td>BSIT</td>
            <td>Active</td>
         </tr>
         <tr>
            <td>Mark</td>
            <td>5959547</td>
            <td>BSA</td>
            <td>Inactive</td>
         </tr>
         <tr>
            <td>Doe</td>
            <td>5959547</td>
            <td>BSA</td>
            <td>Banned</td>
         </tr>
      </tbody>
      </table>
   </body>
</html>

表格过滤器正在工作,但我想添加文本,当我单击它时,它将成为文本框的值并将过滤表格。我添加的文本是“事件”、“非事件”和“禁止”。如果单击其中之一,它将是输入的值。问题是过滤器代码不适用于该代码。

任何帮助将不胜感激

最佳答案

更新了代码,检查一下 https://jsfiddle.net/kushal812/vwhccu7w/16/

所做的一些更改

var table = $('#mytable')
$('a').click(function (e) {
     e.preventDefault();
     var text = $(this).text() || "";
     table.find('tbody > tr').hide();
     $('input[type=search]').val(text);
     table.find("." + text.toLowerCase()).removeClass("hidden")
 });

关于javascript - 过滤表不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29670097/

相关文章:

javascript - 如果鼠标下的元素只有 "overflow-y: scroll"并且水平滚动,iOS Safari 似乎永远不会触发滚动事件

javascript - 丑化语法错误​​ : Unexpected token: punc ())

javascript - 按顺序切换多个 div

javascript - 当用户将鼠标悬停在链接上时想要显示图标/选项

javascript - 热键用户脚本有效,但在特定站点上除外?

javascript - 以不同的方法在 javascript 中添加列表

javascript - cms 使如何在我的模板中包含 javascript 变得简单

javascript - 单击模式对话框按钮后如何取消选中复选框?

javascript - Tablesorter自定义过滤器功能 - 全表过滤器

javascript - 检测您的网站是否在后台运行