Web前端:HTML篇(七)表单

梓仁沐白 2024-08-26 08:33:02 阅读 73

表单

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

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

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

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

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

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

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

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

<form action="/" method="post">code>

<!-- 文本输入框 -->

<label for="name">用户名:</label>code>

<input type="text" id="name" name="name" required>code>

<br>

<!-- 密码输入框 -->

<label for="password">密码:</label>code>

<input type="password" id="password" name="password" required>code>

<br>

<!-- 单选按钮 -->

<label>性别:</label>

<input type="radio" id="male" name="gender" value="male" checked>code>

<label for="male">男</label>code>

<input type="radio" id="female" name="gender" value="female">code>

<label for="female">女</label>code>

<br>

<!-- 复选框 -->

<input type="checkbox" id="subscribe" name="subscribe" checked>code>

<label for="subscribe">订阅推送信息</label>code>

<br>

<!-- 下拉列表 -->

<label for="country">国家:</label>code>

<select id="country" name="country">code>

<option value="cn">CN</option>code>

<option value="usa">USA</option>code>

<option value="uk">UK</option>code>

</select>

<br>

<!-- 提交按钮 -->

<input type="submit" value="提交">code>

</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>code>


HTML 表单 - 输入元素

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

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

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


文本域(Text Fields)

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

<code><form>

First name: <input type="text" name="firstname"><br>code>

Last name: <input type="text" name="lastname">code>

</form>

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


密码字段

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

<code><form>

Password: <input type="password" name="pwd">code>

</form>

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


单选按钮(Radio Buttons)

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

<code><form action="">code>

<input type="radio" name="sex" value="male">男<br>code>

<input type="radio" name="sex" value="female">女<br>code>

<input type="radio" name="sex" value="Agender">无性别<br>code>

<input type="radio" name="sex" value="Lesbian">女同<br>code>

<input type="radio" name="sex" value="Gay">男同<br>code>

<input type="radio" name="sex" value="Bisexual">两性恋<br>code>

<input type="radio" name="sex" value="Transgender">跨性别者<br>code>

<input type="radio" name="sex" value="111">武装直升机code>

</form>

复选框(Checkboxes)

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

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

<code><form>

<input type="checkbox" name="vehicle[]" value="Bike">我喜欢自行车<br>code>

<input type="checkbox" name="vehicle[]" value="Car">我喜欢小汽车code>

</form>


提交按钮(Submit)

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

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

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

<code><form name="input" action="html_form_action.php" method="get">code>

Username: <input type="text" name="user">code>

<input type="submit" value="Submit">code>

</form>

选择框

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

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

<form>

<select>

<option selected disabled hidden style="display: none" value=""></option>code>

<option value="volvo">Volvo</option>code>

<option value="saab">Saab</option>code>

<option value="fiat">Fiat</option>code>

<option value="audi">Audi</option>code>

</select>

</form>

selected:使此选项成为默认选项。disabled:使此选项无法点击。style="display:none":使此选项不在旧版浏览器中显示。 hidden:使此选项不显示在下拉列表中。

 <code><label>标签

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

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

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

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

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



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。