Bootstrap 4 Filters

Bootstrap 4 provides a filter component that is used to search an element from a list, table, etc. Bootstrap does not contain any component or utility that helps to perform filtering. You need to add the jQuery to filter an element.

Filter Tables – You can filter the table elements with the help of Bootstrap and jQuery. You are able to search an item in a table such as a name, email id, etc.

Example

<!DOCTYPE html>
 <html lang="en">
 <head>
   <title>Bootstrap 4 Filter Example</title>
   <meta charset="utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1">
   <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
   <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
   <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
 </head>
 <body>
 <div class="container mt-3">
   <h2>Filterable Table</h2>
   <input class="form-control" id="myInput" type="text" placeholder="Search..">
   <br>
   <table class="table table-bordered">
     <thead>
       <tr>
         <th>Firstname</th>
         <th>Lastname</th>
         <th>Email</th>
       </tr>
     </thead>
     <tbody id="myTable">
       <tr>
         <td>Henry</td>
         <td>Smith</td>
         <td>henry@xyz.com</td>
       </tr>
       <tr>
         <td>Gary</td>
         <td>Davis</td>
         <td>gary@xyz.com</td>
       </tr>
       <tr>
         <td>Thomas</td>
         <td>Stewart</td>
         <td>thomas@xyz.com</td>
       </tr>
       <tr>
         <td>Ronald</td>
         <td>Wright</td>
         <td>ronald@xyz.com</td>
       </tr>
     </tbody>
   </table>
 </div>
 <script>
 $(document).ready(function(){
   $("#myInput").on("keyup", function() {
     var value = $(this).val().toLowerCase();
     $("#myTable tr").filter(function() {
       $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
     });
   });
 });
 </script>
 </body>
 </html> 

Output

filter.PNG

Filter Lists – Filter lists are similar to the filter tables. There is one difference between filter tables and filter lists. In the filter table, we search an item from tables, but in filter lists, we search an item from the lists.

Example

<!DOCTYPE html>
 <html lang="en">
 <head>
   <title>Bootstrap 4 Filter Example</title>
   <meta charset="utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1">
   <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
   <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
   <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
 </head>
 <body>
 <div class="container mt-3">
   <h2>Filterable List</h2>
   <input class="form-control" id="myInput" type="text" placeholder="Search..">
   <br>
   <ul class="list-group" id="myList">
     <li class="list-group-item">First item</li>
     <li class="list-group-item">Second item</li>
     <li class="list-group-item">Third item</li>
     <li class="list-group-item">Fourth</li>
   </ul>  
 </div>
 <script>
 $(document).ready(function(){
   $("#myInput").on("keyup", function() {
     var value = $(this).val().toLowerCase();
     $("#myList li").filter(function() {
       $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
     });
   });
 });
 </script>
 </body>
 </html> 

Output

filter1.PNG

Filter Anything – This is used to filter any element from anywhere, whether it is a list, table, paragraph, or anything else.

Example

<!DOCTYPE html>
 <html lang="en">
 <head>
   <title>Bootstrap 4 Filter Example</title>
   <meta charset="utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1">
   <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
   <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
   <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
 </head>
 <body>
 <div class="container mt-3">
   <h2>Filter Anything</h2>
   <input class="form-control" id="myInput" type="text" placeholder="Search..">
   <div id="myDIV" class="mt-3">
     <p>I am a paragraph.</p>
     <div>I am a div element inside div.</div>
     <button class="btn">I am a button</button>
     <button class="btn btn-info">Another button</button>
     <p>Another paragraph.</p>
   </div>
 </div>
 <script>
 $(document).ready(function(){
   $("#myInput").on("keyup", function() {
     var value = $(this).val().toLowerCase();
     $("#myDIV *").filter(function() {
       $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
     });
   });
 });
 </script>
 </body>
 </html> 

Output

filter2.PNG