While working on tables with huge data and pagination, you might want to make the contents searchable and jquery allows you to do that easily.
First of all, add a search field in your page and give it an id. For this example, we're giving it the id search.
<input type="text" name="" id="search">
Now, we'll add a jquery script that'll be triggered by keyup function on that id. You can add a button too and trigger the event on submit as well.
<script> $("#search").keyup(function() { var value = $(this).val().toLowerCase(); $("table tr").filter(function() { $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1) }); }); </script>
Once the jquery is triggered it'll convert the value sent via that field into lowercase and store in a variable named value here.
$("table tr").filter(function() {})
function will run through each table row content and check if any text in that row matches the value retrieved from the search field.
Finally, $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
will hide all the table rows that don't contain the specified value in one of their <td>
and display only those <tr>
that contain at least one <td>
that matches the value sent via search field.
All the other table rows will return a value of -1 except those with content that matches the value sent via search field.
Alternatively, you can also write it the easier way as shown below and the result would be same.
<script> $("#search").keyup(function() { var value = $(this).val().toLowerCase(); if(value.length > 0){ $("table tr").filter(function() { var data = $(this).text().toLowerCase().indexOf(value); if(data < 1){ $(this).hide(); }else{ $(this).show(); } }); } }); </script>
This way, you can add search functionality in your webpages with data in tabular format with greater convenience. You can even use this jquery search filter to find contents in a <div>
, <p>
or even <li>
elements by simply replacing the HTML elements table tr
from the script.
Leave a comment