如何限制搜索“文本输入”结果以仅返回所选“类别”过滤器下拉列表中的结果

线

我从该论坛整理了脚本,以帮助我从一个非常复杂的表中过滤搜索结果。我希望用户能够1.选择类别,然后2.使用文本输入字段搜索表。

我将这两个功能都单独工作,但是我希望搜索功能(文本输入)仅显示按所选类别类型过滤的结果。当前,搜索功能将覆盖类别输入,并显示所有表行中的所有表行,而与类别无关。

例如,在下面的代码中,我想将类别设置为“ all”并搜索Taylor,返回2个结果。我还希望能够选择类别3并搜索Taylor,并且仅接收1个结果。

有人可以帮我吗?谢谢!

<div class="container">

    <h2>Finder</h2>

     <div class="step1">
        <p>Show category:</p>
     </div>

     <select type="search" class="select-table-filter" data-table="order-table" id="searchInput">
        <option value="">All</option>  
        <option value="1">1</option>  
        <option value="2">2</option>  
        <option value="3">3</option>  
     </select>

<input type="search" class="light-table-filter" data-table="order-table" placeholder="Search ..." />
<table class="order-table" id="myTable">
   <thead>
      <tr class="header">
        <th>Category</th>
        <th>Name</th>
        <th>Last Name</th>
        <th>Phone</th>
        <th>Email</th>
      </tr>
    </thead>
    <tbody>
     <tr>
         <td>1</td>
         <td>Taylor</td>
         <td>Swift</td>
         <td>1234 5678</td>
         <td>[email protected]</td>
     </tr>
     <tr>
         <td>2</td>
         <td>John</td>
         <td>Smith</td>
         <td>1234 5678</td>
         <td>[email protected]</td>
     </tr>
    <tr>
         <td>3</td>
         <td>Jane</td>
         <td>Doh</td>
         <td>1234 5678</td>
         <td>[email protected]</td>
     </tr>
    <tr>
         <td>3</td>
         <td>Taylor</td>
         <td>Doh</td>
         <td>1234 5678</td>
         <td>[email protected]</td>
     </tr>
   </tbody>
</table>

这是我的脚本:

(function(document) {
'use strict';

var LightTableFilter = (function(Arr) {

var _input;
var _select;

    /***** FUNCTION FOR SEARCH 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);
            });
        });
    }




    /***** INPUT CODE TO SEARCH ONLY FIRST COLUMN *****/
    function _onSelectEvent(e) {
          var input, filter, table, tr, td, i, txtValue;
      input = document.getElementById("searchInput");
      filter = input.value.toUpperCase();
      table = document.getElementById("myTable");
      tr = table.getElementsByTagName("tr");
      for (i = 0; i < tr.length; i++) {
        td = tr[i].getElementsByTagName("td")[0];
        if (td) {
          txtValue = td.textContent || td.innerText;
          if (txtValue.toUpperCase().indexOf(filter) > -1) {
            tr[i].style.display = "";
          } else {
            tr[i].style.display = "none";
          }
        }       
      }
    }


    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');
            var selects = document.getElementsByClassName('select-table-filter');
            Arr.forEach.call(inputs, function(input) {
                input.oninput = _onInputEvent;
            });
            Arr.forEach.call(selects, function(select) {
                select.onchange  = _onSelectEvent;
            });
                }
            };
        })(Array.prototype);

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


        })(document);
怀安

尝试这个:

function _filter(row) {
            var input = document.getElementById("searchInput");
            var category = row.getElementsByTagName('td')[0].textContent;
            var filter = input.value.toUpperCase();
            var text = row.textContent.toLowerCase(), val = _input.value.toLowerCase();
            row.style.display = text.indexOf(val) === -1 ? 'none' : ((filter === '' || category === filter) && 'table-row');
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

结果列表文本输入过滤器

来自分类Dev

限制过滤器结果?

来自分类Dev

Elasticsearch DSL限制过滤器返回的结果比指定的更多

来自分类Dev

Django过滤器返回以输入的查询开头的结果

来自分类Dev

如何使用Django Rest过滤器限制查询结果

来自分类Dev

在AngularJS的选择下拉列表中添加搜索过滤器

来自分类Dev

如果文本过滤器在ng-repeat中没有返回结果,则显示消息

来自分类Dev

如果文本过滤器在ng-repeat中没有返回结果,则显示消息

来自分类Dev

角度搜索过滤器结果

来自分类Dev

如何仅在Laravel中获得一个搜索查询过滤器的结果

来自分类Dev

在Angular2中,如何检测到过滤器/管道未返回任何结果

来自分类Dev

Rails过滤器通过使用链接的索引结果(无下拉列表)

来自分类Dev

下拉列表和复选框过滤器的jQuery排序结果

来自分类Dev

根据 django-admin 创建的类别在引导下拉列表中创建 Django 过滤器

来自分类Dev

Android 搜索过滤器在没有结果时显示文本视图

来自分类Dev

带有布尔的弹性搜索过滤器查询返回无效结果

来自分类Dev

带有布尔的弹性搜索过滤器查询返回无效结果

来自分类Dev

ramda过滤器仅返回第一个结果

来自分类Dev

仅当输入3个字符时如何使过滤器/搜索栏搜索?

来自分类Dev

角文本输入过滤器初始化无结果

来自分类Dev

需要帮助使搜索过滤器和下拉列表与列表中的多个值绑定

来自分类Dev

在Django的搜索结果上应用AND过滤器

来自分类Dev

如果过滤器返回nil,如何不返回空结果?

来自分类Dev

如果过滤器返回nil,如何不返回空结果?

来自分类Dev

如何在jQuery Ajax中发送所有搜索过滤器值并获得结果?

来自分类Dev

ActiveAdmin 过滤器按输入排除结果

来自分类Dev

ElasticSearch过滤器未返回结果...语法问题?

来自分类Dev

Elasticsearch条款过滤器未返回任何结果

来自分类Dev

数组过滤器返回奇怪的结果

Related 相关文章

  1. 1

    结果列表文本输入过滤器

  2. 2

    限制过滤器结果?

  3. 3

    Elasticsearch DSL限制过滤器返回的结果比指定的更多

  4. 4

    Django过滤器返回以输入的查询开头的结果

  5. 5

    如何使用Django Rest过滤器限制查询结果

  6. 6

    在AngularJS的选择下拉列表中添加搜索过滤器

  7. 7

    如果文本过滤器在ng-repeat中没有返回结果,则显示消息

  8. 8

    如果文本过滤器在ng-repeat中没有返回结果,则显示消息

  9. 9

    角度搜索过滤器结果

  10. 10

    如何仅在Laravel中获得一个搜索查询过滤器的结果

  11. 11

    在Angular2中,如何检测到过滤器/管道未返回任何结果

  12. 12

    Rails过滤器通过使用链接的索引结果(无下拉列表)

  13. 13

    下拉列表和复选框过滤器的jQuery排序结果

  14. 14

    根据 django-admin 创建的类别在引导下拉列表中创建 Django 过滤器

  15. 15

    Android 搜索过滤器在没有结果时显示文本视图

  16. 16

    带有布尔的弹性搜索过滤器查询返回无效结果

  17. 17

    带有布尔的弹性搜索过滤器查询返回无效结果

  18. 18

    ramda过滤器仅返回第一个结果

  19. 19

    仅当输入3个字符时如何使过滤器/搜索栏搜索?

  20. 20

    角文本输入过滤器初始化无结果

  21. 21

    需要帮助使搜索过滤器和下拉列表与列表中的多个值绑定

  22. 22

    在Django的搜索结果上应用AND过滤器

  23. 23

    如果过滤器返回nil,如何不返回空结果?

  24. 24

    如果过滤器返回nil,如何不返回空结果?

  25. 25

    如何在jQuery Ajax中发送所有搜索过滤器值并获得结果?

  26. 26

    ActiveAdmin 过滤器按输入排除结果

  27. 27

    ElasticSearch过滤器未返回结果...语法问题?

  28. 28

    Elasticsearch条款过滤器未返回任何结果

  29. 29

    数组过滤器返回奇怪的结果

热门标签

归档