当前位置: 首页 > news >正文

Web前端:HTML篇(七)表单

表单

HTML 表单用于收集用户的输入信息。

HTML 表单表示文档中的一个区域,此区域包含交互控件,将用户收集到的信息发送到 Web 服务器。

HTML 表单通常包含各种输入字段、复选框、单选按钮、下拉列表等元素。

以下是一个简单的HTML表单的例子:

  • <form> 元素用于创建表单,action 属性定义了表单数据提交的目标 URL,method 属性定义了提交数据的 HTTP 方法(这里使用的是 "post")。
  • <label> 元素用于为表单元素添加标签,提高可访问性。
  • <input> 元素是最常用的表单元素之一,它可以创建文本输入框、密码框、单选按钮、复选框等。type 属性定义了输入框的类型,id 属性用于关联 <label> 元素,name 属性用于标识表单字段。
  • <select> 元素用于创建下拉列表,而 <option> 元素用于定义下拉列表中的选项。

表单是一个包含表单元素的区域。

表单元素是允许用户在表单中输入内容,比如:文本域(textarea)、下拉列表(select)、单选框(radio-buttons)、复选框(checkbox) 等等。

我们可以使用 <form> 标签来创建表单:

<form action="/" method="post"><!-- 文本输入框 --><label for="name">用户名:</label><input type="text" id="name" name="name" required><br><!-- 密码输入框 --><label for="password">密码:</label><input type="password" id="password" name="password" required><br><!-- 单选按钮 --><label>性别:</label><input type="radio" id="male" name="gender" value="male" checked><label for="male">男</label><input type="radio" id="female" name="gender" value="female"><label for="female">女</label><br><!-- 复选框 --><input type="checkbox" id="subscribe" name="subscribe" checked><label for="subscribe">订阅推送信息</label><br><!-- 下拉列表 --><label for="country">国家:</label><select id="country" name="country"><option value="cn">CN</option><option value="usa">USA</option><option value="uk">UK</option></select><br><!-- 提交按钮 --><input type="submit" value="提交">
</form>

用Flask获取表单:

你可以通过对应的后端框架来获取这个表单的内容,下面用Py的Flask来举例子。下面创建一个py文件,同目录下创建一个名叫templates的文件夹。

HTML 文件保存在 templates 文件夹中,命名为 test.html。Flask 默认会在 templates 文件夹中查找 HTML 文件。

from flask import Flask, request, render_template  # 导入 Flask 框架及其所需的模块  app = Flask(__name__)  # 创建 Flask 应用实例  @app.route('/', methods=['GET', 'POST'])  # 定义路由,支持 GET 和 POST 请求  
def form():  # 定义处理表单的视图函数  if request.method == 'POST':  # 检查请求方法是否为 POST  # 获取表单数据  name = request.form.get('name')  # 获取用户名  password = request.form.get('password')  # 获取密码  gender = request.form.get('gender')  # 获取性别  subscribe = request.form.get('subscribe')  # 获取订阅复选框值,可能不存在  country = request.form.get('country')  # 获取国家  # 处理获取的数据,例如返回显示  return f'''  <h1>提交的信息:</h1>  <p>用户名: {name}</p>  # 显示用户名  <p>密码: {password}</p>  # 显示密码  <p>性别: {gender}</p>  # 显示性别  <p>订阅推送信息: {"是" if subscribe else "否"}</p>  # 判断订阅状态并显示  <p>国家: {country}</p>  # 显示选择的国家  '''  # 如果是 GET 方法,渲染表单  return render_template('test.html')  # 返回表单的 HTML 模板  if __name__ == '__main__':  # 判断是否作为主程序运行  app.run(debug=True)  # 启动 Flask 应用,并开启调试模式

注意:在 Python 代码中,获取表单数据的部分是通过 request.form.get('field_name') 来实现的,其中 field_name 对应于 HTML 表单中各个输入元素的 name 属性。

如:

用户名:

  • Python: name = request.form.get('name')
  • HTML: <input type="text" id="name" name="name" required>


HTML 表单 - 输入元素

多数情况下被用到的表单标签是输入标签 <input>。

输入类型是由 type 属性定义。

接下来我们介绍几种常用的输入类型。


文本域(Text Fields)

文本域通过 <input type="text"> 标签来设定,当用户要在表单中键入字母、数字等内容时,就会用到文本域。

<form>
First name: <input type="text" name="firstname"><br>
Last name: <input type="text" name="lastname">
</form>

注意:表单本身并不可见。同时,在大多数浏览器中,文本域的默认宽度是 20 个字符。


密码字段

密码字段通过标签 <input type="password"> 来定义:

<form>
Password: <input type="password" name="pwd">
</form>

注意:密码字段字符不会明文显示,而是以星号 * 或圆点 . 替代。


单选按钮(Radio Buttons)

<input type="radio"> 标签定义了表单的单选框选项:

<form action="">
<input type="radio" name="sex" value="male">男<br>
<input type="radio" name="sex" value="female">女<br>
<input type="radio" name="sex" value="Agender">无性别<br>
<input type="radio" name="sex" value="Lesbian">女同<br>
<input type="radio" name="sex" value="Gay">男同<br>
<input type="radio" name="sex" value="Bisexual">两性恋<br>
<input type="radio" name="sex" value="Transgender">跨性别者<br>
<input type="radio" name="sex" value="111">武装直升机
</form>

复选框(Checkboxes)

<input type="checkbox"> 定义了复选框。

复选框可以选取一个或多个选项:

<form>
<input type="checkbox" name="vehicle[]" value="Bike">我喜欢自行车<br>
<input type="checkbox" name="vehicle[]" value="Car">我喜欢小汽车
</form>


提交按钮(Submit)

<input type="submit"> 定义了提交按钮。

当用户单击确认按钮时,表单的内容会被传送到服务器。表单的动作属性 action 定义了服务端的文件名。

action 属性会对接收到的用户输入数据进行相关的处理:

<form name="input" action="html_form_action.php" method="get">
Username: <input type="text" name="user">
<input type="submit" value="Submit">
</form>

选择框

如何使用隐藏在下拉列表中的默认空白值实现SELECT标记

只需使用禁用和/或隐藏属性:

<form><select><option selected disabled hidden style="display: none" value=""></option><option value="volvo">Volvo</option><option value="saab">Saab</option><option value="fiat">Fiat</option><option value="audi">Audi</option></select>
</form>
  • selected:使此选项成为默认选项。
  • disabled:使此选项无法点击。
  • style="display:none":使此选项不在旧版浏览器中显示。 
  • hidden:使此选项不显示在下拉列表中。

 <label>标签

我最前面的实例中比后面单独的例子多了 <label>标签。

将一个 <label> 和一个 <input> 元素相关联主要有这些优点:

  • 标签文本不仅与其相应的文本输入元素在视觉上相关联,程序中也是如此。这意味着,当用户聚焦到这个表单输入元素时,屏幕阅读器可以读出标签,让使用辅助技术的用户更容易理解应输入什么数据。
  • 你可以点击关联的标签来聚焦或者激活这个输入元素,就像直接点击输入元素一样。这扩大了元素的可点击区域,让包括使用触屏设备在内的用户更容易激活这个元素。

将一个 <label> 和一个 <input> 元素匹配在一起,你需要给 <input> 一个 id 属性。而 <label> 需要一个 for 属性,其值和 <input> 的 id 一样。

另外,也可以将 <input> 直接放在 <label> 里,此时则不需要 for 和 id 属性,因为关联已隐含存在。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • angular入门基础教程(五)父子组件的数据通信
  • 七天打造一套量化交易系统:Day6-人工智能在量化投资中的应用
  • 【建议收藏】大数据Hadoop实战入门手册,配套B站视频教程1小时速通
  • 67.利用FreeLibrary函数实现无痕注入的核心代码
  • 证书及公钥SHA256值计算方法
  • 大模型重塑软件研发,从辅助编程到多 Agent 协同还有多远?| 新程序员
  • 公钥和私钥
  • 请你谈谈:vue的渲染机制(render)- 2举例说明问题
  • Kafka使用案例
  • 测量温湿度通过蓝牙和串口发送数据显示在LCD1602屏上
  • 紫辉创投开启Destiny of Gods首轮投资,伯乐与千里马的故事仍在继续
  • 2024杭电多校01——1003树
  • SpringBoot Mysql->达梦8 activiti6.0.0 项目迁移
  • JLink烧录失败
  • 免费发送邮件两种接口方式:SMTP和邮件API
  • 30秒的PHP代码片段(1)数组 - Array
  • Invalidate和postInvalidate的区别
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • Javascript Math对象和Date对象常用方法详解
  • Logstash 参考指南(目录)
  • Sequelize 中文文档 v4 - Getting started - 入门
  • TCP拥塞控制
  • 猴子数据域名防封接口降低小说被封的风险
  • 基于Android乐音识别(2)
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • #android不同版本废弃api,新api。
  • #include<初见C语言之指针(5)>
  • #QT项目实战(天气预报)
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (2)MFC+openGL单文档框架glFrame
  • (3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (四)汇编语言——简单程序
  • (转)3D模板阴影原理
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)拼包函数及网络封包的异常处理(含代码)
  • (转)我也是一只IT小小鸟
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .NET Micro Framework初体验(二)
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .NET连接MongoDB数据库实例教程
  • .NET企业级应用架构设计系列之应用服务器
  • .net实现客户区延伸至至非客户区
  • .NET微信公众号开发-2.0创建自定义菜单
  • .php文件都打不开,打不开php文件怎么办
  • @AliasFor注解
  • @Controller和@RestController的区别?
  • @private @protected @public