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 属性,因为关联已隐含存在。

  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值