Live search through table rows

前端 未结 15 1733
失恋的感觉
失恋的感觉 2020-11-29 00:52

I want to do a live search through the table rows, using jQuery, the \"live\" word is the key, because I want to type the keywords in the text input, on the same site and I\

相关标签:
15条回答
  • 2020-11-29 01:31

    If any cell in a row contains the searched phrase or word, this function shows that row otherwise hides it.

        <input type="text" class="search-table"/>  
         $(document).on("keyup",".search-table", function () {
                    var value = $(this).val();
                    $("table tr").each(function (index) {
                        $row = $(this);
                        $row.show();
                        if (index !== 0 && value) {
                            var found = false;
                            $row.find("td").each(function () {
                                var cell = $(this).text();
                                if (cell.indexOf(value.toLowerCase()) >= 0) {
                                    found = true;
                                    return;
                                } 
                            });
                            if (found === true) {
                                $row.show();
                            }
                            else {
                                $row.hide();
                            }
                        }
              });
       });
    
    0 讨论(0)
  • 2020-11-29 01:32

    Here is the pure Javascript version of it with LIVE search for ALL COLUMNS :

    function search_table(){
      // Declare variables 
      var input, filter, table, tr, td, i;
      input = document.getElementById("search_field_input");
      filter = input.value.toUpperCase();
      table = document.getElementById("table_id");
      tr = table.getElementsByTagName("tr");
    
      // Loop through all table rows, and hide those who don't match the search query
      for (i = 0; i < tr.length; i++) {
        td = tr[i].getElementsByTagName("td") ; 
        for(j=0 ; j<td.length ; j++)
        {
          let tdata = td[j] ;
          if (tdata) {
            if (tdata.innerHTML.toUpperCase().indexOf(filter) > -1) {
              tr[i].style.display = "";
              break ; 
            } else {
              tr[i].style.display = "none";
            }
          } 
        }
      }
    }
    
    0 讨论(0)
  • 2020-11-29 01:34

    Here's a version that searches both columns.

    $("#search").keyup(function () {
        var value = this.value.toLowerCase().trim();
    
        $("table tr").each(function (index) {
            if (!index) return;
            $(this).find("td").each(function () {
                var id = $(this).text().toLowerCase().trim();
                var not_found = (id.indexOf(value) == -1);
                $(this).closest('tr').toggle(!not_found);
                return not_found;
            });
        });
    });
    

    demo: http://jsfiddle.net/rFGWZ/369/

    0 讨论(0)
提交回复
热议问题