实现多条件搜索

server/2024/12/20 20:40:31/
htmledit_views">

引言

在日常的Web开发中,用户经常需要对表格数据进行筛选,以便快速找到他们感兴趣的信息。实现一个多条件搜索功能是一个常见的需求,它允许用户通过输入多个搜索条件来过滤表格中的数据。本文将介绍如何使用HTML、CSS和jQuery来实现一个简单的多条件搜索功能。

功能简介

本文展示的页面允许用户通过三个条件进行搜索:

  1. 姓名:可以输入姓名进行模糊匹配。
  2. 职位:可以根据职位进行搜索。
  3. 年龄:可以根据年龄进行搜索。

用户输入搜索条件后,点击“搜索”按钮,表格会根据条件进行筛选,仅显示符合条件的数据行。点击“重置”按钮则会清空所有输入框并恢复所有数据行的显示。

代码解析

1. HTML 结构

HTML 部分创建了一个简单的页面结构,包含了搜索表单、数据表格以及必要的样式。

html"><h1 style="text-align: center;">多条件搜索</h1><!-- 多条件搜索表单 --><div class="form-container"><input type="text" id="nameInput" placeholder="姓名"><input type="text" id="titleInput" placeholder="职位"><input type="number" id="ageInput" placeholder="年龄"><button id="searchButton">搜索</button><button id="resetButton">重置</button></div><!-- 数据表格 --><table id="dataTable"><thead><tr><th>ID</th><th>姓名</th><th>职位</th><th>年龄</th></tr></thead><tbody><tr><td>1</td><td>张三</td><td>前端工程师</td><td>28</td></tr><tr><td>2</td><td>李四</td><td>后端工程师</td><td>32</td></tr><tr><td>3</td><td>王五</td><td>产品经理</td><td>27</td></tr><tr><td>4</td><td>赵六</td><td>UI设计师</td><td>25</td></tr><tr><td>5</td><td>孙七</td><td>前端工程师</td><td>30</td></tr><tr><td>6</td><td>张三</td><td>后端工程师</td><td>30</td></tr><tr><td>7</td><td>张其</td><td>前端工程师</td><td>26</td></tr><tr><td>8</td><td>王随</td><td>UI设计师</td><td>27</td></tr><tr><td>9</td><td>王笑</td><td>前端工程师</td><td>26</td></tr><tr><td>10</td><td>孙悟空</td><td>后端工程师</td><td>25</td></tr><tr><td>11</td><td>赵书</td><td>UI设计师</td><td>25</td></tr></tbody></table>

说明

  • 搜索表单包含了三个输入框和两个按钮。每个输入框对应一个搜索条件(姓名、职位、年龄)。
  • 数据表格包含了多行数据,每一行代表一条记录,用户可以根据输入的条件筛选出符合条件的数据行。

2. CSS 样式

CSS 用于美化页面布局,确保表格、输入框和按钮有适当的间距,并让页面更加美观易用。

html" title=css>css">	        /* 表格样式 */table {width: 80%;margin: 20px auto;border-collapse: collapse;}th,td {padding: 10px;border: 1px solid #ddd;}th {background-color: #f4f4f4;}input,select {margin: 10px;padding: 5px;}.highlight {background-color: yellow;}.form-container {text-align: center;margin-bottom: 20px;}.form-container input {width: 150px;margin: 5px;}

说明

  • 表格宽度为页面的80%,居中显示,列之间有间隔。
  • 输入框和按钮有统一的边距和内边距,使得页面更加整洁。

3. jQuery 实现多条件搜索

使用 jQuery,我们可以轻松处理用户输入并筛选表格数据。下面是核心的JavaScript代码,它实现了搜索和重置按钮的功能。

html" title=javascript>javascript">// 搜索按钮点击事件
$('#searchButton').on('click', function() {// 获取输入框的值let nameTerm = $('#nameInput').val().toLowerCase();let titleTerm = $('#titleInput').val().toLowerCase();let ageTerm = $('#ageInput').val().toLowerCase();// 遍历表格的每一行$('#dataTable tbody tr').each(function() {let row = $(this);let name = row.find('td').eq(1).text().toLowerCase(); // 获取姓名let title = row.find('td').eq(2).text().toLowerCase(); // 获取职位let age = row.find('td').eq(3).text().toLowerCase(); // 获取年龄// 判断每个条件是否匹配let matchName = name.includes(nameTerm) || nameTerm === "";let matchTitle = title.includes(titleTerm) || titleTerm === "";let matchAge = age.includes(ageTerm) || ageTerm === "";// 如果所有条件都匹配,则显示该行,否则隐藏if (matchName && matchTitle && matchAge) {row.show();} else {row.hide();}});
});// 重置按钮点击事件
$('#resetButton').on('click', function() {// 清空输入框$('#nameInput').val('');$('#titleInput').val('');$('#ageInput').val('');// 恢复所有行的显示$('#dataTable tbody tr').show();
});

还可以使用 filter() 方法来实现多条件搜索,可以通过数组的过滤机制来处理表格行的显示和隐藏。我们可以将表格行的内容提取到一个数组中,然后使用 filter() 来判断每一行是否符合条件。 下面是通过 filter() 方法改写后的代码:

html" title=javascript>javascript">		// 搜索按钮点击事件$('#searchButton').on('click', function() {// 获取输入框的值let nameTerm = $('#nameInput').val().toLowerCase();let titleTerm = $('#titleInput').val().toLowerCase();let ageTerm = $('#ageInput').val().toLowerCase();// 获取所有表格行let rows = $('#dataTable tbody tr').toArray();// 使用 filter 方法过滤符合条件的行let filteredRows = rows.filter(function(row) {let name = $(row).find('td').eq(1).text().toLowerCase(); // 获取姓名let title = $(row).find('td').eq(2).text().toLowerCase(); // 获取职位let age = $(row).find('td').eq(3).text().toLowerCase(); // 获取年龄// 判断每个条件是否匹配let matchName = name.includes(nameTerm) || nameTerm === "";let matchTitle = title.includes(titleTerm) || titleTerm === "";let matchAge = age.includes(ageTerm) || ageTerm === "";return matchName && matchTitle && matchAge;});// 隐藏所有行$('#dataTable tbody tr').hide();// 显示符合条件的行$(filteredRows).each(function() {$(this).show();});});// 重置按钮点击事件$('#resetButton').on('click', function() {// 清空输入框$('#nameInput').val('');$('#titleInput').val('');$('#ageInput').val('');// 恢复所有行的显示$('#dataTable tbody tr').show();});

说明

  • 搜索功能:当用户点击“搜索”按钮时,我们会获取每个输入框的值(并转换为小写以实现不区分大小写的匹配)。然后,通过 .each() 方法遍历表格中的每一行,检查每一列是否包含对应的输入值。如果满足条件,则显示该行,否则隐藏。
  • 重置功能:点击“重置”按钮时,清空所有输入框,并恢复表格中所有行的显示。

    另外,如果你写页面渲染搜索时,可以直接调用渲染函数不必写这两句,请根据实际情况更改
    // 如果所有条件都匹配,则显示该行,否则隐藏
    if (matchName && matchTitle && matchAge) {row.show();} else {row.hide();}

4. 交互效果

  • 搜索:用户输入搜索条件并点击“搜索”按钮后,表格会根据用户输入的姓名、职位和年龄进行筛选。只有符合所有条件的行会显示,其他行会被隐藏。
  • 重置:用户点击“重置”按钮时,输入框中的内容会被清空,表格的所有行都会恢复显示。

总结

通过这个简单的多条件搜索示例,我们演示了如何使用 HTML、CSS 和 jQuery 实现一个基本的表格数据筛选功能。用户可以根据多个条件(如姓名、职位、年龄)快速筛选出所需的数据行,提升了用户体验。这个功能可以很容易地应用到实际的Web项目中,特别是在数据量较大的情况下,能够有效提高信息检索的效率。


http://www.ppmy.cn/server/151776.html

相关文章

LLaMA-Factory QuickStart 流程详解

1. 项目背景与目标 LLaMA-Factory 是一个整合主流高效训练与微调技术的框架&#xff0c;支持主流开源大模型&#xff08;如 LLaMA、Qwen、Baichuan 等&#xff09;&#xff0c;提供便捷的接口和工作台&#xff0c;降低大模型微调门槛。 2. 流程概览 2.1 前置准备 硬件与驱动…

面试题整理5----进程、线程、协程区别及僵尸进程处理

面试题整理5----进程、线程、协程区别及僵尸进程处理 1. 进程、线程与协程的区别1.1 进程&#xff08;Process&#xff09;1.2 线程&#xff08;Thread&#xff09;1.3 协程&#xff08;Coroutine&#xff09;2. 总结对比 3. 僵尸进程3.1 什么是僵尸进程&#xff1f;3.2 僵尸进…

Docker镜像与容器管理

1. Docker镜像的概念与生命周期 Docker镜像&#xff08;Image&#xff09;是构建Docker容器的基础。镜像是一个只读的模板&#xff0c;包含了容器运行所需的操作系统环境、应用程序、依赖库和配置文件等。镜像的创建过程是通过Dockerfile定义的&#xff0c;每个镜像层&#xf…

安卓LiveDataBus使用记录

创建三个文件 BusMutableLiveData.ktpackage com.donews.common.livedatabus;import androidx.annotation.NonNull; import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.…

力扣-图论-12【算法学习day.62】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;&#xff09;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非…

题目 3010: 奇偶数之和

题目 3010: 奇偶数之和 时间限制: 2s 内存限制: 192MB 提交: 3298 解决: 2005 题目描述 利用循环&#xff0c;分别输出1∼n之间的所有奇数的和、偶数的和。 输入格式 输入n 输出格式 输出为一行&#xff0c;两个数(用一个空格隔开)&#xff0c;偶数之和与奇数之和。 样例输入 1…

python实现视频切分图片

python脚本 import os import subprocess from tkinter import * import tkinter.messagebox import tkinter as tkdef videoCut(video_path,fps):# 获取当前工作路径</

快速解决oracle 11g中exp无法导出空表的问题

在一些生产系统中&#xff0c;有些时候我们为了进行oracle数据库部分数据的备份和迁移&#xff0c;会使用exp进行数据的导出。但在实际导出的时候&#xff0c;我们发现导出的时候&#xff0c;发现很多空表未进行导出。今天我们给出一个快速解决该问题的办法。 一、问题复现 我…