《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表单中实现基本到复杂的验证,从而提高用户体验和数据安全性。实现有效的表单验证是确保用户方便地输入数据并保护这些数据不受恶意攻击的重要步骤。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【GAMES101】Lecture 12 阴影 Shadow Mapping

这里是光栅化的最后一部分&#xff0c;讲这个光栅化里面怎么实现这个阴影 实际上阴影就是光源看不到的地方但是是我们能看到的地方&#xff0c;那这个地方就应该有阴影&#xff0c;那具体怎么做呢&#xff0c;这个就叫做Shadow Mapping&#xff0c;分两步做 我们之前说过这个解…

Stable Diffusion系列(四):提示词规则与使用

文章目录 基础规则高级规则插件使用基于相机镜头增强提示词常用提示词总结奇特提示词珍藏 基础规则 所谓提示词&#xff0c;也就是文生图中的文&#xff0c;由连贯的英语单词或句子组成。其最基础的规则是&#xff1a; 不同提示词之间需要用英文逗号分隔&#xff0c;空格和换…

基于大数据的B站数据分析系统的设计与实现

摘要&#xff1a;随着B站&#xff08;哔哩哔哩网&#xff09;在国内视频分享平台的崛起&#xff0c;用户规模和数据量不断增加。为了更好地理解和利用这些海量的B站数据&#xff0c;设计并实现了一套基于Python的B站数据分析系统。该系统采用了layui作为前端框架、Flask作为后端…

mfc140.dll找不到了要怎么解决?教你多种修复mfc140.dll的方法

遭遇 mfc140.dll 文件缺失的状况时&#xff0c;首要任务是保持冷静&#xff0c;并深入理解问题所在&#xff0c;随后按照科学的方法来应对这一挑战。本篇文章概述了多种应对策略&#xff0c;从适合新手的基本步骤到针对有技术基础用户的高级方案&#xff0c;各种手段都能有效地…

linux系统查看占用cpu程序

目录 一&#xff1a;top 二&#xff1a; ps 三&#xff1a;perf 四&#xff1a;/proc/stat 五&#xff1a;pidstat 一&#xff1a;top 使用 top 命令&#xff1a;在终端中输入 top 命令&#xff0c;系统会显示当前正在运行的进程和它们的资源占用情况。默认情况下&#…

awk 文本处理工具三剑客

一、什么是awk 1.1 awk 基本概念 awk&#xff08;语言&#xff09;&#xff1a; 读取一行处理一行 是一个功能强大的编辑工具&#xff0c;逐行读取输入文本&#xff0c;默认以空格或tab键作为分隔符作为分隔&#xff0c;并按模式或者条件执行编辑命令。而awk比较倾向于将一行…

【网络】:网络套接字(UDP)

网络套接字 一.网络字节序二.端口号三.socket1.常见的API2.封装UdpSocket 四.地址转换函数 网络通信的本质就是进程间通信。 一.网络字节序 我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分, 磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分,网…

UE5.1_常用节点说明(经常忘记怎么用?)(常改)

UE5.1_常用节点说明&#xff08;经常忘记怎么用&#xff1f;&#xff09;&#xff08;常改&#xff09; 1. Gate——门节点。只有当门是Open状态才会执行Exit后面的代码。 Open开门&#xff1b;Close关门&#xff1b;Toggle开门和关门交替。 2. 关于控制ArmLength即控制相机前…

vite+vue3+ts项目上线docker 配置反向代理API

这次重点的坑是反向代理。 1。项目中配置代理&#xff0c;为了跨域请求数据 项目根目录中新建vite.config.ts文件 在文件中添加配置代理 注意&#xff1a;其中 /api 和target 的地址后面没有 / 2。在项目根目录中新建Httprequest.ts文件&#xff0c;引入axios&#xff0c;并…

Kotlin快速入门系列8

Kotlin的泛型 与Java一样&#xff0c;Kotlin也提供泛型。泛型&#xff0c;即 "参数化类型"&#xff0c;将类型参数化&#xff0c;可以用在类&#xff0c;接口&#xff0c;方法上。可以为类型安全提供保证&#xff0c;消除类型强转的烦恼。声明泛型类的格式如下&…

UDP/TCP协议特点

1.前置知识 定义应用层协议 1.确定客户端和服务端要传递哪些信息 2.约定传输格式 网络上传输的一般是二进制数据/字符串 结构化数据转二进制/字符串 称为序列化 反之称之为反序列化 下面就是传输层了 在TCP/IP协议中,我们以 目的端口,目的IP 源端口 源IP 协议号这样一个五…

202413读书笔记|《好好恋爱是件正经事》——希望我们的故事永远崭新得像刚刚开始,永远未完待续

202413读书笔记|《好好恋爱是件正经事》——希望我们的故事永远崭新得像刚刚开始&#xff0c;永远未完待续 明亮的色彩&#xff0c;小红和小绿&#xff0c;哲理又日常治愈的文字&#xff0c;明快的线条&#xff0c;丰富的背景色&#xff0c;星星点点的⭐️斑斓点缀。 是情侣的…

能替代微软AD的国产化方案,搭建自主可控的身份管理体系

随着国产化替代步伐加速&#xff0c;以及企业出于信息安全建设的需要&#xff0c;越来越多的企业和组织开始考虑将现有的微软 Active Directory&#xff08;AD&#xff09;替换为国产化的LDAP身份目录服务&#xff08;也称统一身份认证和管理&#xff09;系统。本文将介绍一种国…

世界坐标系转换为平面地图坐标

将世界坐标系转换为平面地图坐标的方法通常涉及地图投影。地图投影是一种将地球(一个三维球体)上的点转换为平面(二维)地图上的点的方法。 这里介绍几种常见的地图投影方法: 墨卡托投影(Mercator Projection): 这是最常见的投影方式之一,尤其用于航海地图。它将经纬度…

2023年春秋杯网络安全联赛冬季赛_做题记录

可信计算 基于挑战码的双向认证1 可信计算赛题-双向认证挑战模式.docx 使用命令进行SSH登录上去 ssh player8.147.131.156 -p 18341 # 记得加上-p参数指定端口&#xff0c;不然默认的是22端口看见word文档的提示&#xff0c;先尝试一下 直接获得了flag1 web 魔术方…

24小时涨粉10w+的AI小游戏-哄哄模拟器

近年来&#xff0c;随着chatGPT的爆火&#xff0c;一系列的AI应用应运而生。比如&#xff1a;AI绘画&#xff0c;AI写作等。今天我们来看看最近很火的一个AI小游戏-哄哄模拟器。 1. 试玩体验 这款游戏名叫“哄哄模拟器”&#xff0c;体验地址为&#xff1a;https://hong.grea…

贪吃蛇项目

引言&#xff1a; 本文章使用C语言在Windows环境的控制台中模拟实现经典小游戏贪吃蛇。 实现基本功能&#xff1a; 1.贪吃蛇地图绘制。 2.蛇吃食物的功能&#xff08;上、下、左、右方向键控制蛇的动作&#xff09; 3.蛇撞墙死亡 4.蛇咬到自己死亡 5.计算得分 6.蛇加速…

回文子字符串的个数

判断一个字符串是否是一个回文除了从两端向里移动指针&#xff0c;也可以采用指针从字符串中心开始向两端延伸。即如果存在一个长度为m的回文子字符串&#xff0c;再分别向该回文两端延伸一个字符&#xff0c;并判断这两个字符是否相同&#xff0c;如果相同则找到了一个长度为m…

PMP备考笔记:模拟考试知识点总结

1. 答题思路&#xff1a;优先看问题&#xff0c;可节省时间。 2. 考试就按照考试的套路来做&#xff0c;不要过多考虑。 开发团队只专注当前冲刺目标&#xff0c;产品负责人对PB排优先级。 收集需求工具-原型法&#xff1a;能够让用户提前体验&#xff0c;减少返工的风险。 …

centos7上安装mysql5.7并自定义数据目录路径

1、卸载mariadb rpm -qa |grep mariadb #查出来的结果是mariadb-libs-5.5.68-1.el7.x86_64 rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps #卸载查到的结果 2、官网下载响应的tar.gz包&#xff0c;比如mysql-5.7.38-el7-x86_64.tar.gz &…