【Java 进阶篇】JavaScript 表单验证详解

在这里插入图片描述

JavaScript 表单验证是网页开发中不可或缺的一部分。它允许您确保用户在提交表单数据之前输入了有效的信息。无论您是一个初学者还是一个有经验的开发人员,本文将为您详细介绍如何使用 JavaScript 来进行表单验证。我们将从基础知识开始,逐步深入,以确保您全面了解这个主题。

为什么需要表单验证?

在网页应用程序中,表单是用户与应用之间进行数据交互的主要方式。用户输入的数据可能包含各种信息,例如注册信息、登录凭据、搜索查询等。表单验证的目的是确保这些数据的合法性和完整性。它可以用来:

  • 防止恶意输入:恶意用户可能试图提交不合法或有害的数据。
  • 提高用户体验:通过验证,可以在用户提交表单之前提供及时反馈,帮助用户更容易地纠正错误。
  • 保护数据完整性:确保数据的准确性,防止数据损坏或丢失。
  • 避免服务器负担:在数据传输到服务器之前检查数据的有效性,减少服务器端的负担。

基本的 HTML 表单结构

在深入了解 JavaScript 表单验证之前,让我们首先了解基本的 HTML 表单结构。以下是一个简单的表单示例:

<!DOCTYPE html>
<html>
<head><title>表单验证示例</title>
</head>
<body><form id="myForm"><label for="name">姓名:</label><input type="text" id="name" name="name"><br><label for="email">电子邮件:</label><input type="email" id="email" name="email"><br><input type="submit" value="提交"></form>
</body>
</html>

这是一个简单的包含姓名和电子邮件字段的表单。用户可以在这个表单中输入信息并点击 “提交” 按钮。

JavaScript 表单验证的基础

为了进行表单验证,我们需要使用 JavaScript 来检查用户输入的数据。以下是一个简单的 JavaScript 函数,用于验证上面的表单:

function validateForm() {var name = document.getElementById("name").value;var email = document.getElementById("email").value;if (name === "") {alert("姓名不能为空");return false;}if (email === "") {alert("电子邮件不能为空");return false;}return true;
}

这个函数首先获取表单中的姓名和电子邮件字段的值,然后检查它们是否为空。如果任何一个字段为空,它将显示一个警告框并返回 false,防止表单提交。否则,它将返回 true,允许表单提交。

接下来,我们需要将这个验证函数与表单关联起来。这可以通过在表单的 onsubmit 属性上设置函数名来完成:

<form id="myForm" onsubmit="return validateForm()"><!-- 表单字段 -->
</form>

现在,当用户尝试提交表单时,validateForm 函数将被调用,并根据验证的结果来决定是否允许提交。

常见的表单验证技巧

上面的示例演示了一个非常基本的表单验证。在实际应用中,您可能需要更多的验证技巧来确保数据的准确性。以下是一些常见的表单验证技巧:

检查电子邮件格式

验证电子邮件地址是否符合正确的格式是非常重要的。您可以使用正则表达式来进行电子邮件验证。以下是一个验证电子邮件格式的 JavaScript 函数示例:

function validateEmail(email) {var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;return emailPattern.test(email);
}

您可以在 validateForm 函数中使用这个函数来验证电子邮件字段。

检查密码强度

如果您正在处理用户注册或更改密码,通常需要确保密码足够强大。密码强度验证通常包括以下要求:

  • 至少 8 个字符
  • 包含至少一个大写字母
  • 包含至少一个小写字母
  • 包含至少一个数字
  • 包含至少一个特殊字符(例如,!@#$%^)

您可以编写 JavaScript 函数来验证密码是否符合这些要求。

检查重复密码

如果您要求用户输入密码两次(通常是为了确保他们没有输错),您还需要验证这两次输入是否匹配。在 validateForm 函数中,您可以添加代码来检查密码字段和确认密码字段是否相同。

数值范围验证

如果您正在处理数值输入,例如年龄或金额,您可能需要验证这些数值是否在允许的范围内。您可以使用条件语句来检查数值是否大于或小于特定值,并在不符合要求时提供错误消息。

自定义验证错误消息

在上面的示例中,我们使用 alert 函数来显示验证错误消息。然而,这并不是最好的用户体验,通常我们会希望将错误消息直接显示在页面上,以便用户更容易理解。为此,您可以使用 HTML 元素来显示错误消息,并根据验证结果显示或隐藏它们。

<form id="myForm" onsubmit="return validateForm()"><label for="name">姓名:</label><input type="text" id="name" name="name"><div id="nameError" class="error"></div><br><label for="email">电子邮件:</label><input type="email" id="email" name="email"><div id="emailError" class="error"></div><br><input type="submit" value="提交">
</form>

在上述代码中,我们为每个表单字段后面添加了一个 <div> 元素,用于显示错误消息。这些 <div> 元素都有一个共同的 class,叫做 “error”,我们可以使用 CSS 来定义 “error” 类的样式,以使错误消息在需要时显示出来。以下是一个简单的示例 CSS 样式,可以在页面头部的 <style> 标签中添加:

<style>.error {color: red;font-size: 14px;display: none;}
</style>

这个 CSS 样式定义了错误消息的颜色为红色,字体大小为14像素,并将 display 属性设置为 none,以便默认情况下错误消息是隐藏的。

接下来,我们需要修改 validateForm 函数,以在发现验证错误时显示错误消息,并在验证通过时隐藏它们。下面是修改后的 validateForm 函数:

function validateForm() {var name = document.getElementById("name").value;var email = document.getElementById("email").value;var nameError = document.getElementById("nameError");var emailError = document.getElementById("emailError");// 隐藏所有错误消息nameError.style.display = "none";emailError.style.display = "none";if (name === "") {nameError.style.display = "block";nameError.innerHTML = "姓名不能为空";return false;}if (email === "") {emailError.style.display = "block";emailError.innerHTML = "电子邮件不能为空";return false;}return true;
}

在这个修改后的函数中,我们首先获取了错误消息的 <div> 元素,然后将它们隐藏(style.display = "none")。在验证失败时,我们设置相应的错误消息为 block 来显示它们,并使用 .innerHTML 属性来设置错误消息的文本内容。

这种方式不仅提供了更好的用户体验,还使错误消息更容易自定义样式和内容。

实际案例:注册表单验证

为了更好地理解表单验证的实际应用,让我们创建一个简单的用户注册表单,并对其进行验证。

HTML 注册表单

<!DOCTYPE html>
<html>
<head><title>用户注册</title><style>.error {color: red;font-size: 14px;display: none;}</style>
</head>
<body><h1>用户注册</h1><form id="registrationForm" onsubmit="return validateForm()"><label for="username">用户名:</label><input type="text" id="username" name="username"><div id="usernameError" class="error"></div><br><label for="email">电子邮件:</label><input type="email" id="email" name="email"><div id="emailError" class="error"></div><br><label for="password">密码:</label><input type="password" id="password" name="password"><div id="passwordError" class="error"></div><br><label for="confirmPassword">确认密码:</label><input type="password" id="confirmPassword" name="confirmPassword"><div id="confirmPasswordError" class="error"></div><br><input type="submit" value="注册"></form>
</body>
</html>

JavaScript 表单验证

现在,让我们创建 JavaScript 表单验证函数来验证这个注册表单。我们将验证用户名、电子邮件、密码和确认密码字段。

function validateForm() {var username = document.getElementById("username").value;var email = document.getElementById("email").value;var password = document.getElementById("password").value;var confirmPassword = document.getElementById("confirmPassword").value;var usernameError = document.getElementById("usernameError");var emailError = document.getElementById("emailError");var passwordError = document.getElementById("passwordError");var confirmPasswordError = document.getElementById("confirmPasswordError");// 隐藏所有错误消息usernameError.style.display = "none";emailError.style.display = "none";passwordError.style.display = "none";confirmPasswordError.style.display = "none";var isValid = true;if (username === "") {usernameError.style.display = "block";usernameError.innerHTML = "用户名不能为空";isValid = false;}if (email === "") {emailError.style.display = "block";emailError.innerHTML = "电子邮件不能为空";isValid = false;} else if (!validateEmail(email)) {emailError.style.display = "block";emailError.innerHTML = "电子邮件格式不正确";isValid = false;}if (password === "") {passwordError.style.display = "block";passwordError.innerHTML = "密码不能为空";isValid = false;} else if (password.length < 8) {passwordError.style.display = "block";passwordError.innerHTML = "密码长度不能少于8个字符";isValid = false;}if (confirmPassword === "") {confirmPasswordError.style.display = "block";confirmPasswordError.innerHTML = "确认密码不能为空";isValid = false;} else if (confirmPassword !== password) {confirmPasswordError.style.display = "block";confirmPasswordError.innerHTML = "密码不匹配";isValid = false;}return isValid;
}function validateEmail(email) {var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;return emailPattern.test(email);
}

这个 JavaScript 代码对用户注册表单进行了详尽的验证。它检查了用户名是否为空,电子邮件是否为空且符合正确的格式,密码是否足够强大(至少 8 个字符),以及确认密码是否与密码相匹配。如果任何一个验证失败,对应的错误消息会显示在页面上,阻止表单的提交。

结语

表单验证是网页开发中的一个重要主题,它有助于确保用户输入的数据的准确性和完整性。通过使用 JavaScript,我们可以创建强大的表单验证逻辑,提高用户体验,并确保数据的安全性。希望这篇文章能帮助初学者更好地理解和应用表单验证。如果您希望进一步深入研究,可以了解更多关于表单验证、正则表达式和前端开发的知识。祝您在网页开发中取得更大进步。

作者信息

作者 : 繁依Fanyi
CSDN: https://techfanyi.blog.csdn.net
掘金:https://juejin.cn/user/4154386571867191

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

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

相关文章

【网络】用代码讲解HTTP协议

http协议 前言正式开始HTTP协议URLURL格式中每个字段所代表的内容格式中每个字段的作用URL对于特殊符号的处理 HTTP格式快速构建http请求和响应的报文格式http requesthttp response 一些细节http demo web目录代码实现 HTTP请求方法表单GET和POST提交的区别其余方法 HTTP的状态…

通过Python行命令搭建HTTP服务器结合内网穿透实现外网访问

文章目录 1.前言2.本地http服务器搭建2.1.Python的安装和设置2.2.Python服务器设置和测试 3.cpolar的安装和注册3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 Python作为热度比较高的编程语言&#xff0c;其语法简单且语句清晰&#xff0c;而且python有…

BAT031:按列表名单将路径a下的文件夹批量剪切到路径b

引言&#xff1a;编写批处理程序&#xff0c;实现按列表名单将路径a下的文件夹批量剪切到路径b。 一、新建Windows批处理文件 参考博客&#xff1a; CSDNhttps://mp.csdn.net/mp_blog/creation/editor/132137544 二、写入批处理代码 1.右键新建的批处理文件&#xff0c;点击…

负荷不均衡问题分析处理流程

一、负荷不均衡分析 负荷不均衡判断标准&#xff1a;4G同覆盖扇区内存在无线利用率大于50%的小区&#xff0c;且两两小区间无线利用率差值大于30%&#xff0c;判定为4G负荷不均衡扇区&#xff1b;5G同覆盖扇区内存在无线利用率大于50%的小区&#xff0c;且两两小区间无线利用率…

安装宝塔面板(详细教程)

一、简介 宝塔面板是一款简单好用的服务器运维面板。它支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA等100多项服务器管理功能。对于新手用云服务器来建站的话&#xff0c;宝塔面板是一个非常好用的工具。 宝塔官网&#xff1a;https://www.bt.cn/new/index.html 二、宝…

电脑开不了机用U盘重装系统Win10教程

如果我们遇到了电脑开不起机的问题&#xff0c;这给我们的正常使用带来了很大的影响。这时候我们可以借助U盘重装系统的方法&#xff0c;轻松应对这一问题。下面小编给大家详细介绍关于用U盘给开不机的电脑重装Win10系统的教程步骤&#xff0c;操作后用户就能正常使用电脑了。 …

【MySQL系列】- Select查询SQL执行过程详解

【MySQL系列】- Select查询SQL执行过程详解 文章目录 【MySQL系列】- Select查询SQL执行过程详解一、SQL查询语句的执行过程二、SQL执行过程详解2.1. 连接器2.2. 查询缓存2.3. 分析器2.4. 优化器2.5. 执行器 三、undo log 和 redo log作⽤3.1. redo log &#xff08;重做日志&a…

办鹿uniapp小程序(一)

一、项目初始化 1. appid 》 公司给你 wxc82730a0fc15e28a 2. 开发者身份 》 公司给你添加 小程序官网&#xff1a;小程序 管理》成员管理》项目成员 1、 uniapp ui组件 &#xff08;uView&#xff09; 如果采用npm安装方式在 小程序端不生效 1.1 采用插件的形式安装&#xf…

系统韧性研究(2)|系统韧性如何关联其他质量属性?

对大多数人来说&#xff0c;如果一个系统在逆境中继续执行它的任务&#xff0c;那么它会被认为具有韧性。换句话说&#xff0c;尽管过度的压力或多或少都会导致系统中断&#xff0c;但如果系统依然能够正常运行并提供所需的能力&#xff0c;则可认为该系统具备韧性。 系统韧性…

kubernetes(2)

pod管理 应用部署 上传测试镜像 [rootk8s1 docker]# docker push reg.westos.org/library/myapp:v1 [rootk8s1 docker]# docker push reg.westos.org/library/myapp:v2创建自助式pod&#xff08;生产不推荐&#xff09; [rootk8s2 ~]# kubectl run demo --imagemyapp:v1[ro…

nodejs+vue衣服穿搭推荐系统-计算机毕业设计

模块包括主界面&#xff0c;系统首页、个人中心、用户管理、风格标签管理、衣服分类管理、衣服穿搭管理、服装信息管理、我的搭配管理、用户反馈、系统管理等进行相应的操作。无论是日常生活&#xff0c;还是特定场景&#xff0c;诸如面试、约会等&#xff0c;人们都有展现自我…

基于Qt QSpinBox 微调框小案例

修改微调框数值的方式包括: 单击右侧的向上/向下按钮 按键盘的向上/向下键 在微调框获取焦点时,通过鼠标滚轮的上下滚动 当然了,也允许用户手动输入 其中: QSpinBox - 用于整数的显示和输入 QDoubleSpinBox - 用于浮点数的显示和输入 它们都是 QAbstractSpinBox 的子类,具…

[云原生1.] Docker容器的简单介绍和基本管理

1. Docker容器的基本概述 1.1 简介 Docker是一个开源的应用容器引擎&#xff0c;基于go语言开发并遵循了apache2.0协议开源。Docker是在Linux容器里运行应用的开源工具&#xff0c;是一种轻量级的“虚拟机”。Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级…

IP地址,端口,域名校验

需求&#xff1a; validateAddress(address) {const parts address.split(:); //例子&#xff1a;[192.168.0.55, 2022]const host parts[0];const port Number(parts[1]);if (/^[0-9]\.[0-9]\.[0-9]\.[0-9]$/.test(host)) {// 是 IP 地址const octets host.split(.);if (…

定制效果在线定制印刷系统源码 DIY在线定制系统源码 云印刷定制系统源码手机、PC端实时互通

支持各类产品的在线定制&#xff0c;无论是水杯雨伞U盘还是T恤衬衫四件套&#xff0c;均可轻松进行定制 独创制作间概念&#xff0c;同一套模板可以重复对应不同制作间 手机、PC端实时互通&#xff0c;客户可通过任意途径进行图片上传、编辑&#xff0c;一方修改另一方即时可见…

iZotope RX 10for Mac /Windows- 音频修复的终极解决方案

随着音乐和电影制作的复杂性日益增加&#xff0c;高质量的音频修复变得越来越重要。iZotope RX 10&#xff0c;作为业界公认的专业音频修复软件&#xff0c;为你提供了强大、精确的工具&#xff0c;让你的声音变得清晰、纯净。 在音频修复领域&#xff0c;iZotope RX 10凭借其…

形式化验证笔记

参考视频&#xff1a; 形式化验证的原理与新应用【DatenLord达坦科技】形式化验证入门(我强推&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;) 形式化验证&#xff1a;在状态机表征的空间里面进行搜索&#xff0c;验证某个模型是否按规范执行且测试覆盖率达到1…

ubuntu20.04运用startup application开机自启动python程序

运用startup application开机自启动python程序。在终端中输入gnome-session-properties,如果显示没有则先进行安装&#xff0c;sudo apt-get update 和sudo apt install StartupApplications(根据显示提示安装)。在显示程序中搜索startup&#xff0c;打开应用程序。 在程序目录…

Paper Reading:《Consistent-Teacher: 减少半监督目标检测中不一致的伪目标》

#pic_center 550x200 目录 简介工作重点方法ASA, adaptive anchor assignmentFAM-3D, 3D feature alignment moduleGMM, Gaussian Mixture Model实施细节 实验与SOTA的比较消融实验 总结 简介 题目&#xff1a;《Consistent-Teacher: Towards Reducing Inconsistent Pseudo-ta…

【每日一题】—— B. Arrays Sum (Grakn Forces 2020)

&#x1f30f;博客主页&#xff1a;PH_modest的博客主页 &#x1f6a9;当前专栏&#xff1a;每日一题 &#x1f48c;其他专栏&#xff1a; &#x1f534; 每日反刍 &#x1f7e1; C跬步积累 &#x1f7e2; C语言跬步积累 &#x1f308;座右铭&#xff1a;广积粮&#xff0c;缓称…