Filtering Table Data with jQuery: A Simple Case-Insensitive Search
When working with dynamic data tables, allowing users to search and filter
content in real time can greatly enhance usability. With jQuery, you can
easily implement a case-insensitive search that filters table rows as the
user types.
Let’s walk through how this works with a practical example.
Live Table Search Using jQuery
Imagine you have a table that lists user information—first name, last name,
and email. You want users to be able to type into a search box and instantly
filter the visible rows.
Here’s how you can do it:
Demo Structure:
<input id="myInput" type="text" placeholder="Search...">
<table id="myTable">
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Email</th>
</tr>
<tr>
<td>John</td>
<td>Doe</td>
<td>john@example.com</td>
</tr>
<tr>
<td>Mary</td>
<td>Moe</td>
<td>mary@mail.com</td>
</tr>
<tr>
<td>July</td>
<td>Dooley</td>
<td>july@greatstuff.com</td>
</tr>
<tr>
<td>Anja</td>
<td>Ravendale</td>
<td>a_r@test.com</td>
</tr>
</table>
jQuery Logic:
<script>
$(document).ready(function() {
$("#myInput").on("keyup", function() {
var value = $(this).val().toLowerCase(); // Get input and
convert to lowercase
$("#myTable tr").filter(function() {
$(this).toggle($(this).text().toLowerCase().indexOf(value) > -1);
});
});
});
</script>
How It Works
- Listening to User Input: The keyup event is triggered whenever the user types something in the input field.
- Standardizing Case: Both the search input and table text are converted to lowercase using .toLowerCase() to make the search case-insensitive.
- Filtering Rows: The filter() function checks each row to see if it contains the typed value. If it doesn't, toggle(false) hides the row. If it does, toggle(true) keeps it visible.
So whether a user types “john”, “John”, or “JOHN”, they’ll still see the
matching entry.
How to Filter List Items with jQuery (Case-Insensitive Search)
Want to make long lists easier to navigate? With just a few lines of
jQuery, you can add a real-time, case-insensitive search feature to filter
list items as the user types.
Let’s walk through a simple example.
Live List Search with jQuery
Suppose you have an unordered list of items, and you want users to be
able to search through them by typing into a text field. Here’s a basic
implementation:
HTML Structure:
<input id="myInput" type="text" placeholder="Search...">
<ul id="myList">
<li>First item</li>
<li>Second item</li>
<li>Third item</li>
</ul>
jQuery Script:
<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>
How It Works
- Input Detection: The script listens for keyup events on the input field.
- Text Matching: It compares the lowercase version of the input against each list item’s text.
- Showing/Hiding Items: If a list item contains the typed value, it stays visible. Otherwise, it’s hidden using toggle().
This allows for a smooth, real-time search experience, regardless of the
letter case—“first”, “FIRST”, or “First” will all return the same
result.
How to Filter Any Text Content Inside a div Using jQuery
Filtering lists and tables is common—but what if you want to filter
anything? Whether it's paragraphs, buttons, or other HTML elements, jQuery
makes it easy to perform a case-insensitive search across all types of
content inside a container.
Let’s look at a simple example where we filter various elements inside a
<div> based on user input.
HTML Example: Filter Mixed Content
<input id="myInput" type="text" placeholder="Search...">
<div id="myContainer">
<p>I am a paragraph.</p>
<div>I am a div element inside div.</div>
<button>I am a button</button>
<button>Another button</button>
<p>Another paragraph.</p>
</div>
jQuery Script to Filter Content:
<script>
$(document).ready(function() {
$("#myInput").on("keyup", function() {
var value = $(this).val().toLowerCase();
$("#myContainer *").filter(function() {
$(this).toggle($(this).text().toLowerCase().indexOf(value) > -1);
});
});
});
</script>
How It Works
- Targeting All Elements: The selector #myContainer * applies the filter to every element inside the container—paragraphs, divs, buttons, etc.
- Case-Insensitive Match: By converting both the input and element text to lowercase using .toLowerCase(), the search becomes case-insensitive.
- Dynamic Visibility: The toggle() method shows or hides elements based on whether the text content includes the typed search term.
So, typing "button", "Paragraph", or "div" will instantly filter and
display only the matching elements.
More topic in jQuery