``` <%@ page language="java" import="test_package.*" import="java.util.*" import="java.sql.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <link rel="stylesheet" href="../style/certificate.css"> </head> <body> <% List<test_information> list = (List<test_information>)session.getAttribute("date"); %> <div class = "tit">查看凭证</div> <div class = "Ribbon"> <table> <tr> <td style="white-space: nowrap;"> <!-- 按钮1 --> <input type="button" value="传统记账" class="R_button"> <!-- 表单2 - 导出 --> <form action="" class="inline-form"> <input type="submit" value="导出" class="R_button"> </form> <!-- 表单3 - 打印 --> <form id="printForm" action="white.jsp" method="post" class="inline-form"> <input type="hidden" id="selectedTelsHiddenField" name="telsToPrint"> <input type="submit" value="打印" onclick="return submitSelectedTels();" class="R_button"> </form> <!-- 按钮4 --> <input type="button" value="模板" onclick="template.show()" class="R_button"> </td> <td> <input type = "text" name = "search_name"> <input type = "button" value = "搜索"> </td> </tr> </table> </div> <div class="body"> <table class="cer" > <% for(test_information news:list) { %> <!-- 将每条记录分为两列展示 --> <tr> <td class="zero_box"> <input type="checkbox" name="selectedTels" value="<%=news.getTel()%>" onchange="updateSelection(this)" style = "zoom : 300%"> </td> <td class="first_box"> <%= news.getMaterial() %> <br/> <%= news.getStart_time() %> </td> <td class="second_box"> <%= news.getWashing_method() %> <br/> <%= news.getPrice() %> </td> <td class="third_box"> <form action =""> <input name = "id" value ="<%=news.getTel() %>" type = "hidden"> <input type ="submit" class = "func_button" value = "税费" ><br> <input type ="submit" class = "func_button" value = "查看凭证" ><br> <input type ="submit" class = "func_button" value = "删除凭证" > </form> <br/> </td> </tr> <% } %> </table> <div style="display:none;" id="printArea"></div> </div> <script> let selectedTelsArray = []; function updateSelection(el) { if (el.checked && !selectedTelsArray.includes(el.value)) { // 如果当前被选中,则加入集合 selectedTelsArray.push(el.value); } else { // 否则移除该元素 const indexToRemove = selectedTelsArray.indexOf(el.value); if (indexToRemove !== -1) { selectedTelsArray.splice(indexToRemove, 1); } } console.log(selectedTelsArray); // 输出调试信息 } // 提交之前设置 hidden field 的值 function submitSelectedTels() { document.getElementById('selectedTelsHiddenField').value = JSON.stringify(selectedTelsArray); return true; } </script> </body> </html>```对表格实现模糊搜索功能,搜索的字段为材质,当输入为空时显示整个表格
时间: 2025-03-17 10:17:28 浏览: 12
要在上述代码中实现针对“材质”字段的模糊搜索功能,并且当输入为空时恢复显示完整表格,可以按照以下步骤修改现有代码:
---
### 修改方案
#### **前端部分**
需要监听用户在文本框中的输入事件 (`onkeyup` 或 `oninput`),并动态过滤表格内容。
以下是具体的改动点:
1. 给 `<input>` 文本框添加一个 ID(例如 `searchInput`),方便通过 JavaScript 获取其值。
2. 添加一段脚本来实时处理用户的输入变化并对表格行进行筛选。
**修改后的 HTML 和 JS 部分:**
```html
<!-- 搜索栏 -->
<input type="text" id="searchInput" oninput="filterTable()" placeholder="请输入材质名称">
<script>
function filterTable() {
// 获取搜索框的内容
let searchValue = document.getElementById("searchInput").value.toLowerCase();
// 获取所有表格数据行 (<tr>)
let rows = document.querySelectorAll(".cer tr");
// 遍历每一行数据
rows.forEach(row => {
// 查找当前行中的 "材质" 单元格(假设是第2列)
let materialCell = row.cells[1]; // 第二列为材质信息
// 判断是否包含搜索关键字(忽略大小写)
if (materialCell && materialCell.textContent.toLowerCase().includes(searchValue)) {
row.style.display = ""; // 显示符合条件的行
} else {
row.style.display = "none"; // 隐藏不符合条件的行
}
});
}
</script>
```
---
#### **后端支持**
如果希望在服务器端完成更复杂的模糊匹配操作,则可以在 JSP 中调整逻辑。将表单提交到服务端查询数据库,返回满足条件的结果集即可。
示例伪代码(JSP + Servlet):
```jsp
<%
String searchText = request.getParameter("search_name"); // 获取前端传入的关键字
List<test_information> filteredList = new ArrayList<>();
if ("".equals(searchText.trim())) {
filteredList = session.getAttribute("data", originalData); // 返回原始列表
} else {
// 根据关键词从原数据中过滤
for (test_information item : originalData) {
if (item.getMaterial().toLowerCase().contains(searchText.toLowerCase())) {
filteredList.add(item);
}
}
}
list = filteredList;
%>
```
然后将此结果渲染至页面。
---
### 最终效果说明
- 用户在输入框中键入任意字符串时,JavaScript 实现会即时隐藏不相关的行。
- 输入为空时自动还原整个表格视图。
---
阅读全文
相关推荐















