表单与交互:HTML表单标签全面解析

目录

前言

一.HTML表单的基本结构

基本结构

示例

二.常用表单控件

文本输入框

选择控件

文件上传

按钮

综合案例 

三.标签的作用

四.注意事项


前言

HTML(超文本标记语言)是构建网页的基础,其中表单(<form>)元素用于收集用户输入的数据。在表单中,<label>标签与表单控件密切配合,提升用户体验和可访问性。本文将详细讲解HTML表单的基本结构、常用控件、<label>标签的作用及相关注意事项。


一.HTML表单的基本结构

表单通过<form>标签定义,包含用户可交互的控件,如文本框、按钮、复选框等。表单的主要作用是收集用户输入,并将数据发送到服务器进行处理。

基本结构

<form action="提交目标URL" method="提交方法">
  <!-- 表单控件 -->
</form>
  • action:指定表单数据提交的目标URL,即服务器端处理程序的地址。
  • method:定义数据提交方式,常用的有:
    • GET:将表单数据附加在URL之后,适用于获取数据,数据量有限制。
    • POST:在HTTP请求体中发送表单数据,适用于提交敏感信息或大量数据。

示例

<form action="/submit" method="post">
  <!-- 表单控件 -->
</form>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    
    <title>表单基本结构</title>
</head>
<body>
    <form action="https://www.baidu.com/s" target="_blank" method="get">
        <input type="text" name="wd"></input>
        <button>去百度搜索</button>
    </form>
    <form action="https://search.jd.com/Search" target="_self" method="get">
        <input type="text" name="keyword"></input>
        <button>去京东搜索</button>
    </form>
    <hr>
    <a href="https://www.baidu.com/s?wd=你好">百度搜索你好</a>
</body>
</html>

 


二.常用表单控件

HTML提供了多种表单控件,满足不同的用户输入需求。以下是一些常用的控件及其描述:

  1. 文本输入框

    • 单行文本框:

      <input type="text" name="username" placeholder="请输入用户名">
      
      • type="text":定义单行文本输入。
      • name:控件名称,用于表单数据提交时标识。
      • placeholder:提供占位提示文本。
    • 密码框:

      <input type="password" name="password" placeholder="请输入密码">
      
      • type="password":输入内容以掩码形式显示,适用于密码输入。
    • 多行文本框:

      <textarea name="message" rows="4" cols="50" placeholder="请输入留言"></textarea>
      
      • <textarea>:用于多行文本输入。
      • rowscols:定义文本区域的行数和列数。
  2. 选择控件

    • 复选框:

      <input type="checkbox" name="subscribe" value="newsletter"> 订阅新闻
      
      • type="checkbox":允许用户进行多选。
      • value:提交时的值。
    • 单选按钮:

      <input type="radio" name="gender" value="male"> 男
      <input type="radio" name="gender" value="female"> 女
      
      • type="radio":在一组选项中仅允许选择一个。
      • name:相同的name属性将这些按钮分组。
    • 下拉列表:

      <select name="country">
        <option value="china">中国</option>
        <option value="usa">美国</option>
        <option value="uk">英国</option>
      </select>
      
      • <select>:创建下拉列表。
      • <option>:定义列表中的选项。
  3. 文件上传

    <input type="file" name="profile_picture">
    
    • type="file":允许用户选择文件上传。
  4. 按钮

    • 提交按钮:

      <input type="submit" value="提交">
      
      • type="submit":点击后提交表单。
    • 重置按钮:

      <input type="reset" value="重置">
      
      • type="reset":点击后重置表单内容。
    • 普通按钮:

      <button type="button" onclick="alert('按钮被点击')">点击我</button>
      
      • <button>:可包含文本或HTML元素的按钮。
      • type="button":定义为普通按钮,不会提交表单。

综合案例 

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>表单控件</title>
</head>
<body>
    <form action="https://search.jd.com/Search">
        账户:<input type="text" name="account" value="hulin" maxlength="10" placeholder="请输入用户名"><br><!--value默认值-->
        密码:<input type="password" name="password" placeholder="请输入密码"></input><br>
        性别:
        <!--单选-->
        <input type="radio" name="gender" value="男" checked>男<!--chexk默认选中-->
        <input type="radio" name="gender" value="女">女
       <br>
       <!--多选-->
        爱好:
        <input type="checkbox" name="hobby" value="打篮球" checked>打篮球</input>
        <input type="checkbox" name="hobby" value="打游戏">打游戏</input>
        <input type="checkbox" name="hobby" value="看电影">看电影</input>
        <br>
        其他:
        <textarea name="other" cols="30" rows="10"></textarea>
        <br>
        <!--下拉框-->
        籍贯:
        <select name="address">
            <option value="北京">北京</option>
            <option value="上海" selected>上海</option><!--默认选择-->
            <option value="广东">广东</option>
            <option value="深圳">深圳</option>
        </select>
        <!---->
        <!--隐藏域-->
        <br>
        <input type="hidden" name="type" value="1"></input>
        <!--确认按钮-->
        <!--<button>确认</button>  默认按钮类型是submit-->
        <br>
        <button type="submit" values="确认">确认</button>
        <button type="reset">重置</button>
        <!--重置按钮-->
        <!--<input type="reset" value="重置"></input> -->
        <!--普通按钮-->
        <input type="button" value="普通按钮"></input>
    </form>
</body>
</html>

 


三.<label>标签的作用

<label> 标签用于为表单控件定义标签,提升用户体验和可访问性。通过点击 <label>,用户可以聚焦到对应的表单控件。

有两种方式将 <label> 与表单控件关联:

  1. 使用 for 属性<label>for 属性值应与对应表单控件的 id 属性值相同。

    <label for="email">电子邮件:</label>
    <input type="email" id="email" name="email">
    

  2. 将表单控件嵌套在 <label> 内部:此时无需使用 forid 属性。

    <label>电子邮件:<input type="email" name="email"></label>
    

需要注意的是,避免在 <label> 内嵌套可交互的元素,如链接或按钮,以免影响用户体验。

综合案例,fieldset和legend将单独写一篇进行补充。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>表单控件</title>
</head>
<body>
    <form action="https://search.jd.com/Search">
        <fieldset>
            <legend>基本信息</legend>
            <label for="zhanghu">账户:</label>  <!--for与id关联,点击label标签,会自动聚焦到id对应的input标签上-->
        <input id="zhanghu" type="text" name="account" value="hulin" maxlength="10"><br>
        <label>
            密码:
            <input type="password" name="password" ></input>
        </label>
        </fieldset>
        <br>
        <fieldset>
            <legend>附加信息</legend>
            性别:
        <!--单选-->
          <label>
            <input type="radio" name="gender" value="男" >男</input>
          </label>
           
       
            <input type="radio" name="gender" value="女"  id="nv"></input>
            <label for="nv">女</label>
      
       <br>
       <!--多选-->
        爱好:
        <label><input type="checkbox" name="hobby" value="打篮球" checked>打篮球</input></label>
        <label><input type="checkbox" name="hobby" value="打游戏">打游戏</input></label>
        <label><input type="checkbox" name="hobby" value="看电影">看电影</input></label>
        
        </fieldset>
        
        <br>
        其他:
        <textarea name="other" cols="30" rows="10"></textarea>
        <br>
        <!--下拉框-->
        籍贯:
        <select name="address">
            <option value="北京">北京</option>
            <option value="上海" selected>上海</option><!--默认选择-->
            <option value="广东">广东</option>
            <option value="深圳">深圳</option>
        </select>
        <!---->
        <!--隐藏域-->
        <br>
        <input type="hidden" name="type" value="1"></input>
        <!--确认按钮-->
        <!--<button>确认</button>  默认按钮类型是submit-->
        <br>
        <button type="submit">确认</button>
        <button type="reset">重置</button>
        <!--重置按钮-->
        <!--<input type="reset" value="重置"></input> -->
        <!--普通按钮-->
        <input type="button" value="普通按钮"></input>
    </form>
</body>
</html>

四.注意事项

  • 表单验证:确保在客户端和服务器端对用户输入进行验证,保证数据的完整性和安全性。

  • 可访问性:为每个表单控件提供对应的 <label>,以提升对使用辅助技术的用户的友好度。

  • 布局与样式:使用 CSS 对表单进行美化,确保在不同设备上的一致性和响应性。

  • 安全性:防止跨站脚本(XSS)和跨站请求伪造(CSRF)等安全漏洞,确保表单提交的安全性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue3中使用print-js组件实现打印操作

第一步&#xff1a;安装依赖 yarn add print-js 第二步&#xff1a;创建打印组件&#xff1a;PrintHtmlComp.vue <template><div id"printArea_123456789"><!-- 默认插槽&#xff0c;传入打印内容 --><slot></slot></div>…

【计算机网络】TCP/IP 网络模型有哪几层?

目录 应用层 传输层 网络层 网络接口层 总结 为什么要有 TCP/IP 网络模型&#xff1f; 对于同一台设备上的进程间通信&#xff0c;有很多种方式&#xff0c;比如有管道、消息队列、共享内存、信号等方式&#xff0c;而对于不同设备上的进程间通信&#xff0c;就需要网络通…

网络工程师 (29)CSMA/CD协议

前言 CSMA/CD协议&#xff0c;即载波监听多路访问/碰撞检测&#xff08;Carrier Sense Multiple Access with Collision Detection&#xff09;协议&#xff0c;是一种在计算机网络中&#xff0c;特别是在以太网环境下&#xff0c;用于管理多个设备共享同一物理传输介质的重要…

基于Python的人工智能驱动基因组变异算法:设计与应用(下)

3.3.2 数据清洗与预处理 在基因组变异分析中,原始数据往往包含各种噪声和不完整信息,数据清洗与预处理是确保分析结果准确性和可靠性的关键步骤。通过 Python 的相关库和工具,可以有效地去除噪声、填补缺失值、标准化数据等,为后续的分析提供高质量的数据基础。 在基因组…

AI大语言模型

一、AIGC和生成式AI的概念 1-1、AIGC Al Generated Content&#xff1a;AI生成内容 1-2、生成式AI&#xff1a;generative ai AIGC是生成式 AI 技术在内容创作领域的具体应用成果。 目前有许多知名的生成式 AI&#xff1a; 文本生成领域 OpenAI GPT 系列百度文心一言阿里通…

在postman中设置环境变量和全局变量以及五大常用响应体断言

一、什么是环境变量和全局变量 环境变量&#xff08;Environment Variables&#xff09;和全局变量&#xff08;Global Variables&#xff09;是 Postman 中用于存储和管理数据的两种变量类型&#xff0c;它们可以提高 API 测试的灵活性和可维护性。 1、 环境变量&#xff08…

Redis数据库(二):Redis 常用的五种数据结构

Redis 能够做到高性能的原因主要有两个&#xff0c;一是它本身是内存型数据库&#xff0c;二是采用了多种适用于不同场景的底层数据结构。 Redis 常用的数据结构支持字符串、列表、哈希表、集合和有序集合。实现这些数据结构的底层数据结构有 6 种&#xff0c;分别是简单动态字…

C++STL(六)——list模拟

目录 本次所需实现的三个类一、结点类的模拟实现构造函数 二、迭代器类的模拟实现为什么有迭代器类迭代器类的模板参数说明构造函数运算符的重载- -运算符的重载和!运算符的重载*运算符的重载->运算符的重载引入模板第二个和第三个参数 三、list的模拟实现3.1 默认成员函数构…

国产编辑器EverEdit - 替换功能详解

1 替换 1.1 应用场景 替换文本是在文档编辑过程中不可回避的操作&#xff0c;是将指定的关键词替换为新的文本&#xff0c;比如&#xff1a;写代码时修改变量名等。 1.2 使用方法 1.2.1 基本替换 使用主菜单查找 -> 替换&#xff0c;或使用快捷键Ctrl H&#xff0c;会打…

LIMO:上海交大的工作 “少即是多” LLM 推理

25年2月来自上海交大、SII 和 GAIR 的论文“LIMO: Less is More for Reasoning”。 一个挑战是在大语言模型&#xff08;LLM&#xff09;中的复杂推理。虽然传统观点认为复杂的推理任务需要大量的训练数据&#xff08;通常超过 100,000 个示例&#xff09;&#xff0c;但本文展…

防御保护作业二

拓扑图 需求 需求一&#xff1a; 需求二&#xff1a; 需求三&#xff1a; 需求四&#xff1a; 需求五&#xff1a; 需求六&#xff1a; 需求七&#xff1a; 需求分析 1.按照要求进行设备IP地址的配置 2.在FW上开启DHCP功能&#xff0c;并配置不同的全局地址池&#xff0c;为…

蓝桥与力扣刷题(226 翻转二叉树)

题目&#xff1a;给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1]示例 2&#xff1a; 输入&#xff1a;root [2,1,3] 输出&#xff1a;[2,…

大型语言模型(LLM)中的自适应推理预算管理:基于约束策略优化的解决方案

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

[EAI-033] SFT 记忆,RL 泛化,LLM和VLM的消融研究

Paper Card 论文标题&#xff1a;SFT Memorizes, RL Generalizes: A Comparative Study of Foundation Model Post-training 论文作者&#xff1a;Tianzhe Chu, Yuexiang Zhai, Jihan Yang, Shengbang Tong, Saining Xie, Dale Schuurmans, Quoc V. Le, Sergey Levine, Yi Ma 论…

大数据-259 离线数仓 - Griffin架构 修改配置 pom.xml sparkProperties 编译启动

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; Java篇开始了&#xff01; 目前开始更新 MyBatis&#xff0c;一起深入浅出&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff0…

【时时三省】(C语言基础)基础习题1

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 1.什么是程序&#xff1f;什么是程序设计 程序是为实现特定目标或解决特定问题&#xff0c;用计算机能理解和执行的语言编写的一系列指令的集合。 程序设计是问题分析&#xff0c;设计算法…

防火墙用户认证实验

1、创建vlan10和vlan20 2、将接口划分到对应的vlan中 [FW]interface GigabitEthernet 1/0/1.1 [FW-GigabitEthernet1/0/1.1]ip address 172.16.1.254 24 [FW-GigabitEthernet1/0/1.1]vlan-type dot1q 10 [FW]interface GigabitEthernet 1/0/1.2 [FW-GigabitEthernet1/0/1.1]ip …

VUE项目中实现权限控制,菜单权限,按钮权限,接口权限,路由权限,操作权限,数据权限实现

VUE项目中实现权限控制&#xff0c;菜单权限&#xff0c;按钮权限&#xff0c;接口权限&#xff0c;路由权限&#xff0c;操作权限&#xff0c;数据权限实现 权限系统分类&#xff08;RBAC&#xff09;引言菜单权限按钮权限接口权限路由权限 菜单权限方案方案一&#xff1a;菜单…

ESXi Host Client创建ubuntu虚拟机教程及NVIDIA显卡驱动安装

参考文章 VMware虚拟机显卡直通记录 AIGC 实战&#xff08;环境篇&#xff09; - EXSI 8.0 Debian安装RTX3060显卡驱动 重点介绍 client版本是7.0.3 注意&#xff1a;下图中不要选择BIOS 按照两个链接中的方法进行操作&#xff0c;以及本章节的上面几个图片的配置之后&a…

DeepSeek帮助做【真】软件需求-而不是批量刷废话

尝试给DeepSeek一份系统用例规约&#xff0c;让它帮判断哪些地方还没有覆盖涉众利益。结果见以下 需求工作的重点可以放在建模精细的真实现状流程和精细的真实涉众利益上&#xff0c;AI帮助推演系统需求。