
在web开发中,实现表格数据的实时搜索是一个常见的需求。jquery提供了一种简洁高效的方式来完成这一任务。通常,我们会监听一个文本输入框的keyup事件,当用户键入字符时,根据输入值筛选表格中的行。
以下是一个基本的文本筛选实现示例:
HTML结构:
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<style>
/* CSS 样式 */
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}
td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
tr:nth-child(even) {
background-color: #dddddd;
}
</style>
</head>
<body>
<input id="myInput" type="text" placeholder="搜索内容..">
<br><br>
<table>
<thead>
<tr>
<th>名</th>
<th>姓</th>
<th>日期</th>
</tr>
</thead>
<tbody id="myTable">
<tr>
<td>Johnny</td>
<td>Depp</td>
<td>2022-06-03</td>
</tr>
<tr>
<td>Angelina</td>
<td>Jolie</td>
<td>2022-06-04</td>
</tr>
<tr>
<td>Peter</td>
<td>Parker</td>
<td>2022-06-05</td>
</tr>
<tr>
<td>Lebron</td>
<td>James</td>
<td>2022-06-06</td>
</tr>
</tbody>
</table>
</body>
</html>JavaScript逻辑:
$(document).ready(function(){
$("#myInput").on("keyup", function() {
var value = $(this).val().toLowerCase(); // 获取输入值并转为小写
$("#myTable tr").filter(function() { // 遍历表格的每一行
// 检查行文本是否包含输入值,并根据结果显示或隐藏行
$(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
});
});
});这段代码通过indexOf方法检查表格行文本是否包含搜索值,并使用toggle方法控制行的显示与隐藏。这种方法对于通用文本搜索非常有效。
当我们将搜索输入框的类型从text改为date时,虽然用户界面会提供一个日期选择器,但上述keyup事件的逻辑可能不再按预期工作,尤其是在用户通过点击日历而非键盘输入来选择日期时。
问题分析:keyup事件仅在用户按下并释放键盘上的键时触发。对于<input type="date">,当用户通过内置的日期选择器(日历控件)选择一个日期时,并没有键盘事件发生,因此keyup事件不会被触发,导致筛选功能失效。
为了解决input type="date"输入框的这一特殊行为,我们应该监听change事件而非keyup事件。change事件在元素的值发生改变并失去焦点时触发,或者在input type="date"中,当用户从日期选择器中选择一个日期时也会触发。这使得change事件成为处理日期输入框筛选的理想选择。
完整的日期筛选实现代码:
HTML结构 (更新 input 类型):
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<style>
/* CSS 样式与之前相同 */
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}
td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
tr:nth-child(even) {
background-color: #dddddd;
}
</style>
</head>
<body>
<input id="myInput" type="date" placeholder="搜索日期..">
<br><br>
<table>
<thead>
<tr>
<th>名</th>
<th>姓</th>
<th>日期</th>
</tr>
</thead>
<tbody id="myTable">
<tr>
<td>Johnny</td>
<td>Depp</td>
<td>2022-06-03</td>
</tr>
<tr>
<td>Angelina</td>
<td>Jolie</td>
<td>2022-06-04</td>
</tr>
<tr>
<td>Peter</td>
<td>Parker</td>
<td>2022-06-05</td>
</tr>
<tr>
<td>Lebron</td>
<td>James</td>
<td>2022-06-06</td>
</tr>
</tbody>
</table>
</body>
</html>JavaScript逻辑 (更新事件监听):
$(document).ready(function(){
$("#myInput").on("change", function() { // 将 keyup 改为 change
let value = $(this).val().toLowerCase(); // 获取日期输入值,通常为 YYYY-MM-DD 格式
console.log("搜索日期:", value); // 用于调试,查看获取到的日期值
$("#myTable tr").filter(function() {
// 检查行文本是否包含输入的日期值
$(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
});
});
});通过将事件监听从keyup切换到change,我们成功地解决了<input type="date">类型输入框在日期选择器使用场景下的筛选问题。理解不同HTML输入类型和JavaScript事件的特性是构建健壮和用户友好Web应用的关键。这个简单的jQuery技巧能够有效地提升表格数据筛选的用户体验,尤其是在处理日期数据时。
以上就是掌握jQuery表格日期搜索:优化日期输入框的搜索体验的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号