jQuery表格过滤器是一种通过JavaScript/jQuery实现的交互功能,允许用户在网页上对表格数据进行动态筛选和搜索。它通过监听用户输入事件(如键盘输入或选择操作),实时过滤表格内容,只显示匹配的行。
<input type="text" id="searchInput" placeholder="搜索...">
<table id="dataTable">
<thead>
<tr>
<th>姓名</th>
<th>年龄</th>
<th>城市</th>
</tr>
</thead>
<tbody>
<tr>
<td>张三</td>
<td>25</td>
<td>北京</td>
</tr>
<tr>
<td>李四</td>
<td>30</td>
<td>上海</td>
</tr>
<tr>
<td>王五</td>
<td>28</td>
<td>广州</td>
</tr>
</tbody>
</table>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function() {
$("#searchInput").on("keyup", function() {
var value = $(this).val().toLowerCase();
$("#dataTable tbody tr").filter(function() {
$(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
});
});
});
</script>
$("#searchInput").on("keyup", function() {
var value = $(this).val().toLowerCase();
$("#dataTable tbody tr").each(function() {
var match = false;
$(this).find("td").each(function() {
if ($(this).text().toLowerCase().indexOf(value) > -1) {
match = true;
return false; // 退出内部循环
}
});
$(this).toggle(match);
});
});
<input type="text" id="nameFilter" placeholder="按姓名筛选">
<input type="text" id="cityFilter" placeholder="按城市筛选">
<script>
$(document).ready(function() {
$("#nameFilter, #cityFilter").on("keyup", function() {
var nameValue = $("#nameFilter").val().toLowerCase();
var cityValue = $("#cityFilter").val().toLowerCase();
$("#dataTable tbody tr").filter(function() {
var nameMatch = $(this).find("td:eq(0)").text().toLowerCase().indexOf(nameValue) > -1;
var cityMatch = $(this).find("td:eq(2)").text().toLowerCase().indexOf(cityValue) > -1;
$(this).toggle(nameMatch && cityMatch);
});
});
});
</script>
<select id="ageFilter">
<option value="">所有年龄</option>
<option value="25">25岁</option>
<option value="28">28岁</option>
<option value="30">30岁</option>
</select>
<script>
$("#ageFilter").on("change", function() {
var value = $(this).val();
$("#dataTable tbody tr").each(function() {
if (!value || $(this).find("td:eq(1)").text() === value) {
$(this).show();
} else {
$(this).hide();
}
});
});
</script>
$("#searchInput").on("keyup", function() {
try {
var regex = new RegExp($(this).val(), "i");
$("#dataTable tbody tr").hide().filter(function() {
return regex.test($(this).text());
}).show();
} catch(e) {
// 处理无效正则表达式
}
});
$("#searchInput").on("keyup", function() {
var value = $(this).val().toLowerCase();
var $rows = $("#dataTable tbody tr");
// 先隐藏所有行
$rows.hide();
// 只显示匹配的行
$rows.each(function() {
if ($(this).text().toLowerCase().indexOf(value) > -1) {
$(this).show();
}
});
});
通过以上方法,您可以轻松实现各种复杂度的jQuery表格过滤器,提升用户体验和数据检索效率。
没有搜到相关的文章