【HTML】之form表单元素详解

HTML表单是网页与用户交互的关键组成部分,它允许用户输入数据并将数据提交到服务器进行处理。本文将全面详细地介绍HTML表单的各个方面,从基础元素到高级用法,并提供丰富的代码示例和中文注释,帮助你彻底掌握表单的使用。

1. 表单的基本结构

表单由 <form> 元素定义,所有表单元素都必须放在 <form> 标签内。<form> 元素有两个关键属性:

  • action:指定表单数据提交的目标URL。例如 process_form.php 或 submit.aspx。如果没有指定,表单数据将提交到当前页面。

  • method:指定提交数据的方式,常用的有 GET 和 POST 两种:

    • GET: 将表单数据附加在URL后面,以 ? 分隔,例如 form.php?name=john&age=30。GET请求对数据长度有限制,且数据暴露在URL中,安全性较低,适合用于简单的查询。

    • POST: 将表单数据放在HTTP请求体中,不会显示在URL中,安全性更高,适合用于提交敏感数据或大文件上传。

<form action="process_form.php" method="POST"><!--  表单元素放在这里 -->
</form>

注释: 上面的代码创建了一个表单,当用户提交表单时,数据将通过 POST 方法发送到 process_form.php 文件进行处理。

2. 常用表单元素

2.1 <label> 标签

<label> 标签用于为表单元素定义标签(标题)。将 <label> 与表单元素关联起来,可以提高用户体验。点击 <label> 会自动将焦点移动到关联的表单元素上。关联方法有两种:

  1. 使用 for 属性:<label> 的 for 属性值应该与关联表单元素的 id 属性值相同。

  2. 将表单元素嵌套在 <label> 标签内:

<label for="username">用户名:</label> <input type="text" id="username" name="username"><label>密码: <input type="password" name="password"></label>

2.2 输入框 <input>

<input> 元素是最常用的表单元素,它根据 type 属性的不同,呈现各种类型的输入控件。name 属性是必须的,用于标识表单数据字段的名称,服务器端可以通过 name 属性获取对应的值。

  • text: 单行文本输入框。

  • password: 密码输入框,输入的字符会被遮蔽。

  • email: 用于输入邮箱地址,浏览器会进行简单的邮箱格式验证。

  • number: 用于输入数字,可以设置 min、max 和 step 属性来限制输入范围和步长。

  • date: 用于选择日期。

  • time: 用于选择时间。

  • datetime-local: 用于选择日期和时间。

  • month: 用于选择月份和年份。

  • week: 用于选择周数和年份。

  • range: 用于选择一个范围内的值,通常以滑块的形式展现。需要配合 min、max 和 step 属性使用。

  • color: 用于选择颜色。

  • search: 用于输入搜索关键词,外观通常是一个带有搜索图标的文本框。

  • tel: 用于输入电话号码。

  • url: 用于输入网址,浏览器会进行简单的网址格式验证。

  • radio: 单选按钮,同一组单选按钮的 name 属性必须相同,这样用户只能选择其中一个选项。value 属性指定选中该选项时提交的值。

  • checkbox: 复选框,可以多选。value 属性指定选中该选项时提交的值。

  • file: 用于上传文件。

  • hidden: 隐藏字段,用于存储一些不需要用户输入的数据,例如用户ID。

  • submit: 提交按钮,用于提交表单数据。value 属性设置按钮上的文本。

  • image: 图像按钮,可以作为提交按钮使用。需要指定 src 属性来设置图像路径。

  • reset: 重置按钮,用于重置表单数据到初始值。value 属性设置按钮上的文本。

  • button: 普通按钮,需要通过 JavaScript 来定义其功能。

<label for="username">用户名:</label> <input type="text" id="username" name="username" placeholder="请输入用户名">
<label for="password">密码:</label> <input type="password" id="password" name="password">
<input type="submit" value="提交">

2.3 下拉列表 <select> 和 <option>

<select> 元素用于创建下拉列表,<option> 元素定义列表中的选项。multiple 属性可以让 <select> 支持多选。

<label for="city">城市:</label>
<select id="city" name="city"><option value="beijing">北京</option><option value="shanghai" selected>上海</option> <!--- selected 属性设置默认选中项 --><option value="guangzhou">广州</option>
</select>

2.4 文本域 <textarea>

<textarea> 元素用于多行文本输入。rows 和 cols 属性分别设置行数和列数。

<label for="message">留言:</label> <textarea id="message" name="message" rows="5" cols="30"></textarea>

2.5 <button> 元素

<button> 元素可以创建更灵活的按钮,它比 <input type="submit"> 更强大,因为可以在 <button> 标签内添加内容,例如图像和文本格式。

<button type="submit">提交</button>

2.6 <fieldset> 和 <legend>

<fieldset> 元素用于将相关的表单元素分组,<legend> 元素为 <fieldset> 定义标题。

<fieldset><legend>个人信息</legend><label for="name">姓名:</label> <input type="text" id="name" name="name"><br><label for="email">邮箱:</label> <input type="email" id="email" name="email">
</fieldset>

3. 表单属性

除了 action 和 method 属性外,<form> 元素还有其他一些常用的属性:

  • enctype:指定表单数据的编码方式,常用的有 application/x-www-form-urlencoded (默认值) 和 multipart/form-data (用于文件上传)。

  • target:指定提交表单后在哪里显示结果,例如 _blank 在新窗口中打开。

  • novalidate:禁用客户端表单验证。

  • accept、autocomplete、autofocus、disabled、form、list、maxlength、minlength、multiple、name、pattern、placeholder、readonly、required、size、step、value 等,具体含义请参考上一版本内容。

4. 表单验证

HTML5 提供了丰富的表单验证功能,例如:

  • required 属性:指定字段为必填字段。

  • pattern 属性:使用正则表达式验证输入格式。

  • min 和 max 属性:设置数字输入的范围。

  • minlength 和 maxlength 属性:设置文本输入的长度限制。
    此外,还可以使用 JavaScript 进行更复杂的表单验证。

5.案例

代码:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>HTML-表单</title>
</head><body><div align="center""><!-- value: 表单项提交的值 --><form action="" method=" post">姓名: <input type="text" name="name"> <br><br>密码: <input type="password" name="password"> <br><br>性别: <input type="radio" name="gender" value="1"> 男<label><input type="radio" name="gender" value="2"> 女 </label> <br><br>爱好: <label><input type="checkbox" name="hobby" value="java"> java </label><label><input type="checkbox" name="hobby" value="game"> game </label><label><input type="checkbox" name="hobby" value="sing"> sing </label> <br><br>图像: <input type="file" name="image"> <br><br>生日: <input type="date" name="birthday"> <br><br>时间: <input type="time" name="time"> <br><br>日期时间: <input type="datetime-local" name="datetime"> <br><br>邮箱: <input type="email" name="email"> <br><br>年龄: <input type="number" name="age"> <br><br>学历: <select name="degree"><option value="">----------- 请选择 -----------</option><option value="1">大专</option><option value="2">本科</option><option value="3">硕士</option><option value="4">博士</option></select> <br><br>描述: <textarea name="description" cols="30" rows="10"></textarea> <br><br><input type="hidden" name="id" value="1"><!-- 表单常见按钮 --><input type="button" value="按钮"><input type="reset" value="重置"><input type="submit" value="提交"><br></form></div></body></html>

运行:

6. 总结

本文详细介绍了 HTML 表单的各个方面,包括基本结构、常用元素、表单属性和表单验证。通过学习本文,你应该能够熟练地创建和使用 HTML 表单,并实现各种用户交互功能。

学习网站推荐:面向开发者的 Web 技术 | MDN

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/457386.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

强大!Spring Boot 3.3 集成 PDFBox 轻松实现电子签章功能!

强大&#xff01;Spring Boot 3.3 集成 PDFBox 轻松实现电子签章功能&#xff01; 随着数字化办公和电子合同的普及&#xff0c;PDF 文档已经成为很多业务场景中的标准文件格式。为了确保文档的安全性和法律效力&#xff0c;电子签章技术应运而生。电子签章不仅可以证明文件的…

视频美颜平台的搭建指南:基于直播美颜SDK的完整解决方案

众所周知&#xff0c;直播美颜SDK是实现视频美颜功能的核心。本文将详细解析如何基于直播美颜SDK搭建一个完整的视频美颜平台。 一、视频美颜SDK的核心功能 直播美颜SDK作为平台的技术核心&#xff0c;能够提供丰富的美颜效果和稳定的视频处理能力。通常&#xff0c;SDK具备以…

传输层TCP

报头 1.报头和有效载荷如何分离将&#xff0c;有效载荷向上交付&#xff1f; tcp有个标准报头长度为20&#xff0c;那是不是以为我们可以像udp一样分离依靠报头大小去分离&#xff0c;我们仔细去看我们报头中还有个选项没包含到。 我们还有个首部长度&#xff0c;四位可以表…

【Axure高保真原型】分级树筛选中继器表格

今天和大家分享分级树筛选中继器表格的原型模板&#xff0c;点击树的箭头可以展开或者收起子级内容&#xff0c;点击内容&#xff0c;可以筛选出该内容及子级内容下所有的表格数据。左侧的树和右侧的表格都是用中继器制作的&#xff0c;所以使用也很方便&#xff0c;只需要在中…

SwiftUI:单个App支持设置多语言

SwiftUI 全新多语言方案 简化本地化的字符串- WWDC21 - 视频 本地化您的SwiftUI app - WWDC21 - 视频 构建全球化App&#xff1a;本地化的示例- WWDC22 - 视频 构建支持多语言的App - WWDC24 - 视频 单个App支持设置多语言 工程 Info.plist里添加 键值UIPrefersShowingLangua…

论1+2+3+4+... = -1/12 的不同算法

我们熟知自然数全加和&#xff0c; 推导过程如下&#xff0c; 这个解法并不难&#xff0c;非常容易看懂&#xff0c;但是并不容易真正理解。正负交错和无穷项计算&#xff0c;只需要保持方程的形态&#xff0c;就可以“预知”结果。但是这到底说的是什么意思&#xff1f;比如和…

【AI换装整合及教程】CatVTON:时尚与科技的完美融合

在当今数字化时代&#xff0c;时尚行业正经历着一场前所未有的变革&#xff0c;而 CatVTON 作为一款由中山大学、Pixocial 等机构联合研发的轻量化 AI 虚拟换装工具&#xff0c;无疑是这场变革中的璀璨明星。 一、独特的技术架构 CatVTON 基于 Stable Diffusion v1.5 inpainit…

css 切角实现(全)

效果 样式代码 <template><div class"container"><div class"clip-all-angle"> 4个角全部剪切 </div><div class"clip-two-angle"> 切底部两个角 </div><div class"clip-two-top-angle"> …

新鲜出炉,ECCV2024.9.25 首次提出基于 YOLO 目标检测的无源域自适应

原文标题&#xff1a;Source-Free Domain Adaptation for YOLO Object Detection 中文标题&#xff1a;基于 YOLO 目标检测的无源域自适应 论文地址&#xff1a; https://arxiv.org/abs/2409.16538 代码地址&#xff1a; GitHub - vs-cv/sf-yolo 1、Abstract 无源域自适应&…

ACL访问控制

要求&#xff1a; PC1与PC2不能通信。PC1可以和PC3通信。PC2可以和PC3通信。 1. VLAN配置 根据拓扑图的连接&#xff0c;PC1、PC2、PC3属于不同的VLAN。我们需要确保交换机上的端口已经正确划分到不同的VLAN。假设交换机接口的VLAN配置已经完成&#xff08;其他博文有)&…

【Linux】线程池详解及其基本架构与单例模式实现

目录 1.关于线程池的基本理论 1.1.线程池是什么&#xff1f; 1.2.线程池的应用场景&#xff1a; 2.线程池的基本架构 2.1.线程容器 2.2.任务队列 2.3.线程函数&#xff08;HandlerTask&#xff09; 2.4.线程唤醒机制 3.添加单例模式 3.1.单例模式是什么&…

多IP访问网站

1.创建挂载点 mount /dev/sr0 /mnt vim /etc/yum.repos.d/base.repo [BaseOS] nameBaseOS baseurlfile:///mnt/BaseOS gpgcheck0 [Appstream] nameAppStream baseurlfile:///mnt/AppStream gpgcheck0 2.关闭防火墙等 systemctl stop firewalld setenforce 0 3.下载nginx…

【我的 PWN 学习手札】setcontext + shellcode

目录 一、setcontext gadget 二、setcontext shellcode &#xff08;一&#xff09;覆写__free_hook为setcontext53 &#xff08;二&#xff09;在堆块布置了一块sigframe &#xff08;三&#xff09;覆写__free_hook0x8__free_hook0x10 &#xff08;四&#xff09;从__…

流媒体协议.之(RTP,RTCP,RTSP,RTMP,HTTP)(一)

闲着没事做&#xff0c;记录一下开发项目用过的协议&#xff0c;项目中&#xff0c;大多是是实时显示播放的&#xff0c;通过私有协议&#xff0c;传输到上位机&#xff0c;实时播放&#xff0c;延时小于200ms&#xff0c;仿照这些协议&#xff0c;定义的数据格式。如果用这些协…

新王Claude 3.5的6大应用场景

Anthropic AI深夜发布了备受期待的Claude 3.5系列更新&#xff0c;包括了全新升级的Claude 3.5 Sonnet和首发的Claude 3.5 Haiku。 Claude 3.5 Sonnet能够理解细微的指令和上下文&#xff0c;识别并纠正自身错误&#xff0c;还能从复杂数据中生成深入的分析和洞察。 结合最先进…

10.22.2024刷华为OD C题型(三)--for循环例子

脚踝动了手术&#xff0c;现在宾馆恢复&#xff0c;伤筋动骨一百天还真不是说笑的&#xff0c;继续努力吧。 文章目录 靠谱的车灰度图恢复灰度图恢复 -- for循环使用例子 靠谱的车 https://www.nowcoder.com/discuss/564514429228834816 这个题目思路不难&#xff0c;就是要自…

手把手教你安装最强文生图工具ComfyUI

ComfyUI 是一款专为稳定扩散&#xff08;Stable Diffusion&#xff09;设计、基于节点的高效用户界面&#xff0c;因其高度的可定制性&#xff0c;正逐渐成为广大用户的新宠。本文教你如何在 Windows 和 Mac 上安装 ComfyUI&#xff0c;并提供一些快速上手的小贴士。 1 ComfyU…

【mysql进阶】4-7. 通用表空间

通⽤表空间 - General Tablespace 1 通⽤表空间的作⽤和特性&#xff1f; ✅ 解答问题 通⽤表空间是使⽤ CREATE tablespace 语法创建的共享InnoDB表空间 通⽤表空间能够存储多个表的数据&#xff0c;与系统表空间类似也是共享表空间&#xff1b; 服务器运⾏时会把表空间元数…

python爬虫——Selenium的基本使用

目录 一、Selenium的介绍 二、环境准备 1.安装Selenium 2.安装WebDriver 三、元素定位 1.常用定位元素的方法 2. 通过指定方式定位元素 四、窗口操作 1.最大化浏览器窗口 2.设置浏览器窗口大小 3.切换窗口或标签页 切换回主窗口 4. 关闭窗口 关闭当前窗口 关闭所…

博客搭建之路:hexo增加搜索功能

文章目录 hexo增加搜索功能本地搜索弊端algolia搜索 hexo增加搜索功能 hexo版本5.0.2 npm版本6.14.7 next版本7.8.0 作为一个博客&#xff0c;没有搜索功能&#xff0c;如何在大批文章中找到自己想要的&#xff0c;那在hexo中如何增加搜索功能呢&#xff1f; search:path: sea…