《HTML 简易速速上手小册》第8章:HTML 表单高级技术(2024 最新版)

在这里插入图片描述

文章目录

  • 8.1 数据收集与处理
    • 8.1.1 基础知识
    • 8.1.2 案例 1:创建一个注册表单
    • 8.1.3 案例 2:创建一个调查问卷表单
    • 8.1.4 案例 3:创建一个动态添加输入字段的表单
  • 8.2 定制化表单元素
    • 8.2.1 基础知识
    • 8.2.2 案例 1:创建一个带有定制选择的表单
    • 8.2.3 案例 2:创建一个有动态反馈的评分系统
    • 8.2.4 案例 3:构建一个包含多选项的调查问卷
  • 8.3 表单安全性和用户体验
    • 8.3.1 基础知识
    • 8.3.2 案例 1:创建具有基本验证的注册表单
    • 8.3.3 案例 2:创建一个反馈表单,具有复杂的验证
    • 8.3.4 案例 3:创建一个包含实时验证反馈的表单

8.1 数据收集与处理

8.1.1 基础知识

  • 表单的作用:表单是网站与用户互动的主要工具之一,它们用于收集用户信息、处理请求、进行搜索等。
  • 表单元素和结构:一个有效的表单包括各种输入类型如<input><textarea><select>等,以及用于提交数据的<button><input type="submit">
  • 数据的有效性:确保收集到的数据是有效和可用的,是设计表单时需要考虑的重要方面。这通常涉及到验证用户输入的数据是否符合特定格式或标准。

8.1.2 案例 1:创建一个注册表单

假设我们要创建一个用户注册表单,包括姓名、电子邮箱、密码和性别选择。

<!DOCTYPE html>
<html>
<head>
    <title>注册表单</title>
</head>
<body>
    <form action="/submit-form" method="post">
        <label for="name">姓名:</label>
        <input type="text" id="name" name="name" required><br>

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

        <label for="password">密码:</label>
        <input type="password" id="password" name="password" minlength="6" required><br>

        <label>性别:</label>
        <input type="radio" id="male" name="gender" value="male">
        <label for="male"></label>
        <input type="radio" id="female" name="gender" value="female">
        <label for="female"></label><br>

        <button type="submit">注册</button>
    </form>
</body>
</html>

8.1.3 案例 2:创建一个调查问卷表单

我们来创建一个包含多种类型输入的调查问卷表单。

<!DOCTYPE html>
<html>
<head>
    <title>调查问卷</title>
</head>
<body>
    <form action="/submit-survey" method="post">
        <label for="age">年龄:</label>
        <input type="number" id="age" name="age" min="18" max="100" required><br>

        <label for="favorite-color">喜欢的颜色:</label>
        <select id="favorite-color" name="favorite-color">
            <option value="red">红色</option>
            <option value="blue">蓝色</option>
            <option value="green">绿色</option>
        </select><br>

        <label>你喜欢编程吗?</label>
        <input type="checkbox" id="like-coding" name="like-coding" value="yes">
        <label for="like-coding"></label><br>

        <label for="feedback">反馈:</label>
        <textarea id="feedback" name="feedback" rows="4" cols="50"></textarea><br>

        <button type="submit">提交调查</button>
    </form>
</body>
</html>

8.1.4 案例 3:创建一个动态添加输入字段的表单

在这个示例中,我们将创建一个表单,用户可以根据需要添加或删除输入字段。

<!DOCTYPE html>
<html>
<head>
    <title>动态表单</title>
    <script>
        function addInputField() {
            var container = document.getElementById("inputContainer");
            var input = document.createElement("input");
            input.type = "text";
            input.name = "dynamicInput[]";
            container.appendChild(input);
            container.appendChild(document.createElement("br"));
        }
    </script>
</head>
<body>
    <form action="/submit-dynamic-form" method="post">
        <div id="inputContainer">
            <input type="text" name="dynamicInput[]"><br>
        </div>
        <button type="button" onclick="addInputField()">添加更多</button><br>
        <button type="submit">提交</button>
    </form>
</body>
</html>

通过这些案例,你将能够深入了解如何设计和处理各种类型的HTML表单,从简单的注册表单到复杂的调查问卷,再到具有动态字段的表单。这些知识不仅让你的网站功能丰富,还能提升用户的交互体验。

在这里插入图片描述


8.2 定制化表单元素

8.2.1 基础知识

  • 定制化的重要性:定制化表单元素可以提升用户体验,使你的表单更具吸引力和易用性。
  • HTML5 新元素:HTML5引入了多种新的表单元素和属性,如<range>, <date>, <time>等,它们提供了更丰富的用户界面和更好的输入体验。
  • 样式的应用:虽然我们不涉及CSS,但通过简单的HTML属性和标签选择,我们依然可以对表单元素进行一定程度的视觉定制。

8.2.2 案例 1:创建一个带有定制选择的表单

让我们构建一个带有定制化选择项的表单,包括日期选择器和范围滑块。

<!DOCTYPE html>
<html>
<head>
    <title>定制化表单元素</title>
</head>
<body>
    <form>
        <label for="appointment-date">选择日期:</label>
        <input type="date" id="appointment-date" name="appointment-date"><br>

        <label for="volume">调整音量:</label>
        <input type="range" id="volume" name="volume" min="0" max="100"><br>

        <button type="submit">提交</button>
    </form>
</body>
</html>

8.2.3 案例 2:创建一个有动态反馈的评分系统

我们将创建一个评分系统,用户可以通过选择星级来评价,同时显示实时反馈。

<!DOCTYPE html>
<html>
<head>
    <title>动态评分系统</title>
    <script>
        function updateRating(value) {
            document.getElementById('ratingValue').textContent = value;
        }
    </script>
</head>
<body>
    <form>
        <label for="rating">评分:</label>
        <input type="range" id="rating" name="rating" min="1" max="5" oninput="updateRating(this.value)">
        <span id="ratingValue">3</span>/5<br>

        <button type="submit">提交评分</button>
    </form>
</body>
</html>

8.2.4 案例 3:构建一个包含多选项的调查问卷

最后,我们来创建一个调查问卷,用户可以在其中选择多个选项。

<!DOCTYPE html>
<html>
<head>
    <title>多选项调查问卷</title>
</head>
<body>
    <form>
        <fieldset>
            <legend>选择你喜欢的运动:</legend>
            <input type="checkbox" id="sport1" name="sports" value="足球">
            <label for="sport1">足球</label><br>
            <input type="checkbox" id="sport2" name="sports" value="篮球">
            <label for="sport2">篮球</label><br>
            <input type="checkbox" id="sport3" name="sports" value="游泳">
            <label for="sport3">游泳</label><br>
        </fieldset>
        <button type="submit">提交</button>
    </form>
</body>
</html>

通过这些案例,你可以了解到表单元素定制化的不同方式,从基本的HTML5新特性到更复杂的动态交互设计。这些技巧可以帮助你打造更具吸引力和功能性的表单,从而提升整体的用户体验。

在这里插入图片描述


8.3 表单安全性和用户体验

8.3.1 基础知识

  • 表单安全性:保护用户提交的数据不受攻击是至关重要的,特别是对于包含敏感信息的表单。常见的安全措施包括验证用户输入,避免SQL注入、跨站脚本攻击(XSS)等。
  • 用户体验:一个良好的用户体验包括清晰的指示、易于理解的输入字段和友好的错误消息。这可以减少用户犯错的几率,提高表单的完成率。
  • 验证方法:简单的客户端验证可以通过HTML5的required, pattern, 和type属性来实现。更复杂的验证可能涉及JavaScript。

8.3.2 案例 1:创建具有基本验证的注册表单

构建一个注册表单,其中包括客户端验证,以确保所有字段都被正确填写。

<!DOCTYPE html>
<html>
<head>
    <title>带验证的注册表单</title>
</head>
<body>
    <form action="/submit-registration" method="post">
        <label for="username">用户名:</label>
        <input type="text" id="username" name="username" pattern="[A-Za-z0-9]{5,}" title="用户名至少5个字符,只能包含字母和数字" required><br>

        <label for="password">密码:</label>
        <input type="password" id="password" name="password" minlength="8" required><br>

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

        <button type="submit">注册</button>
    </form>
</body>
</html>

8.3.3 案例 2:创建一个反馈表单,具有复杂的验证

在这个案例中,我们创建一个反馈表单,其中包含多种类型的验证,包括文本长度和电子邮件格式。

<!DOCTYPE html>
<html>
<head>
    <title>带验证的反馈表单</title>
</head>
<body>
    <form action="/submit-feedback" method="post">
        <label for="name">姓名:</label>
        <input type="text" id="name" name="name" required><br>

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

        <label for="feedback">反馈:</label>
        <textarea id="feedback" name="feedback" minlength="20" required></textarea><br>

        <button type="submit">提交反馈</button>
    </form>
</body>
</html>

8.3.4 案例 3:创建一个包含实时验证反馈的表单

这个案例中的表单将提供实时的验证反馈,使用JavaScript来告知用户他们的输入是否符合要求。

<!DOCTYPE html>
<html>
<head>
    <title>实时验证反馈表单</title>
    <script>
        function validateInput() {
            var input = document.getElementById('username');
            var error = document.getElementById('error');
            if (input.value.length < 5) {
                error.textContent = '用户名至少需要5个字符。';
            } else {
                error.textContent = '';
            }
        }
    </script>
</head>
<body>
    <form action="/submit-form" method="post">
        <label for="username">用户名:</label>
        <input type="text" id="username" name="username" onkeyup="validateInput()"><br>
        <span id="error" style="color: red;"></span><br>

        <button type="submit">提交</button>
    </form>
</body>
</html>

通过这些案例,你可以了解到如何在HTML表单中实现基本到复杂的验证,从而提高用户体验和数据安全性。实现有效的表单验证是确保用户方便地输入数据并保护这些数据不受恶意攻击的重要步骤。

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

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

相关文章

【Java】Lombok的使用

一、Lombok是什么&#xff1f; Lombok是一个Java库&#xff0c;能自动插入编辑器并构建工具&#xff0c;简化Java开发。通过添加注解的方式&#xff0c;不需要为类编写getter或eques方法&#xff0c;同时可以自动化日志变量&#x1f680; 在我们封装一个类时&#xff0c;最常用…

JMeter 性能测试基本过程及示例

jmeter 为性能测试提供了一下特色&#xff1a; jmeter 可以对测试静态资源&#xff08;例如 js、html 等&#xff09;以及动态资源&#xff08;例如 php、jsp、ajax 等等&#xff09;进行性能测试 jmeter 可以挖掘出系统最大能处理的并发用户数 jmeter 提供了一系列各种形式的…

【UE 材质】闪电材质

效果 步骤 1. 新建一个材质这里命名为“M_Lighting” 打开“M_Lighting”&#xff0c;设置混合模式为半透明&#xff0c;着色模型为无光照 在材质图表中添加如下节点 其中&#xff0c;纹理采样节点的纹理是一个线条 此时预览窗口中效果如文章开头所示。

基于链表实现贪吃蛇游戏

本文中&#xff0c;我们将使用链表和一些Win32 API的知识来实现贪吃蛇小游戏 一、功能 &#xff08;1&#xff09;游戏载入界面 &#xff08;2&#xff09;地图的绘制 &#xff08;3&#xff09;蛇身的移动和变长 &#xff08;4&#xff09;食物的生成 &#xff08;5&…

数学建模学习笔记||灰色关联分析

灰色系统 信息绝对透明的是白色系统&#xff0c;信息绝对秘密的是黑色系统&#xff0c;灰色系统介于两者之间 关联分析 即系统的分析因素 包含多种因素的系统中&#xff0c;哪些因素是主要的&#xff0c;哪些因素是次要的&#xff0c;哪些因素影响大&#xff0c;哪些因素影响小…

vue3+typescript+Vite基础简单项目

gitee地址 数据大屏 菜单管理

【Java反序列化】Shiro-550漏洞分析笔记

目录 前言 一、漏洞原理 二、Shiro环境搭建 三、Shiro-550漏洞分析 解密分析 加密分析 四、URLDNS 链 前言 shiro-550反序列化漏洞大约在2016年就被披露了&#xff0c;在上学时期也分析过&#xff0c;最近在学CC链时有用到这个漏洞&#xff0c;重新分析下并做个笔记&…

希尔伯特变换的在信号解调时的示例

1.希尔伯特变换的应用场景 希尔伯特变换&#xff0c;在数学上的含义是清晰的。它是一个数字移相器&#xff0c;可以把通过它的任何一个信号相移-90度。这个数学工具在信号解调时&#xff0c;会有非常有用的特性出现。可以看示例&#xff1a; 解释一下&#xff1a; 1.最上面的…

Nuget包缓存存放位置迁移

本文介绍了如何通过环境变量修改Nuget包缓存的存放位置。 一、背景 默认情况下&#xff0c;NuGet会将项目中使用的包缓存到C盘&#xff0c;随着项目开发积累nuget包越来越多&#xff0c;这会逐渐挤占大量C盘空间&#xff0c;所以我们可以将nuget包缓存位置指定到其他盘中存放…

秋招面试—浏览器原理篇

浏览器原理篇 1.什么是XSS、CSRF,怎么预防&#xff1f; &#xff08;1&#xff09;XSS(跨站脚本攻击)&#xff1a;攻击者将恶意代码植入到浏览器页面中&#xff0c;盗取存储在客户端的Cookie&#xff1b; ​ XSS分为&#xff1a;①存储型&#xff1a;论坛发帖、商品评论、用户…

(2024,CompAgent,LLM,提示分解,基于布局的对象组合)分而治之:语言模型可以规划和自我纠正组合文本到图像的生成

Divide and Conquer: Language Models can Plan and Self-Correct for Compositional Text-to-Image Generation 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 3. 方法 3.1…

Golang 流媒体服务器lalserver使用指南

目录 安装 使用 1.推流 2.播放 官方地址 安装 1.下载源码 wget https://github.com/q191201771/lal/releases/download/v0.36.7/lal_v0.36.7_linux.zipunzip lal_v0.36.7_linux.zip cd lal_v0.36.7_linux 2.启动 ./bin/lalserver -c ./conf/lalserver.conf.json 使用 …

C语言第十三弹---VS使用调试技巧

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 VS调试技巧 1、什么是bug 2、什么是调试&#xff08;debug&#xff09;&#xff1f; 3、Debug和Release​编辑​ 4、VS调试快捷键 4.1、环境准备 4.2、调试…

java.util.LinkedHashSet cannot be cast to java.util.List 的解决方案

出现 “java.util.LinkedHashSet cannot be cast to java.util.List” 的错误&#xff0c;通常是因为你试图将一个 LinkedHashSet 对象直接强制转换为 List 类型。在 Java 中&#xff0c;LinkedHashSet 和 List 是两种不同的集合类型&#xff0c;不能直接进行转换。LinkedHashS…

小白水平理解面试经典题目LeetCode 455 Assign Cookies【Java实现】

455 分配cookies 小白渣翻译&#xff1a; 假设你是一位很棒的父母&#xff0c;想给你的孩子一些饼干。但是&#xff0c;你最多应该给每个孩子一块饼干。 每个孩子 i 都有一个贪婪因子 g[i] &#xff0c;这是孩子满意的 cookie 的最小大小&#xff1b;每个 cookie j 都有一个…

sv program module

为了避免races&#xff0c;在验证中引入program&#xff1b; Similarities between program and module block A program block can instantiate another program block in the way how the module is instantiated another module block.Both can have no or more inputs, …

知识推理的多重途径

目录 前言1 逻辑及推理简介2 演绎推理&#xff1a;Top-Down Logic2.1 肯定前件假言推理2.2 否定后件假言推理2.3 演绎推理的逻辑链条 3 归纳推理&#xff1a;Bottom-Up Logic3.1 从特例到一般3.2 逐步推导的过程 4 溯因推理&#xff1a;结果的可解释逻辑4.1 推断过程的回溯4.2 …

vue 使用echarts-gl实现3d旋转地图

之前也有使用过echarts开发项目中涉及到的地图功能&#xff0c;当时使用geo来实现地图轮廓&#xff0c;看上去有种3d的感觉。最近闲来无事看了一份可视化大屏的UI设计图&#xff0c;感觉3d旋转地图挺好玩的&#xff0c;今天就来尝试实现下。 首先安装下echarts和echarts-gl依赖…

关于paddleocr的predict_system按高度顺序画图

关于paddleocr的predict_system按高度顺序画图&#xff0c;&#xff08;coco格式&#xff09; 增加adjust_res函数&#xff1a; 实现代码&#xff1a; def adjust_res(res):res_cp deepcopy(res)res_cp sorted(res_cp, keylambda x: x[bbox][1], reverseFalse)return res …

Android Studio项目——TCP客户端

目录 一、TCP客户端UI 1、UI展示 2、xml代码 二、TCP客户端数据发送 三、TCP客户端数据接收 一、TCP客户端UI 1、UI展示 2、xml代码 <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.…