表单验证[用户名、邮箱、密码、重复密码]

news2024/11/25 16:20:07

 <!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>表单验证</title>
        <link rel="stylesheet" href="form.css">
        <!-- 引入样式 -->
        <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"/>
        <!-- 引入组件库 -->
        <script src="https://unpkg.com/element-ui/lib/index.js"></script>
    </head>
    <body>
    <div class="container">
            <div class="header"><h2>表单验证</h2></div>
        <form class="form" id="form">
            <div class="form_control" id="form_control">
                <label for="">用户名</label>
                <input type="text" placeholder="请输入用户名" id="username"/>
                <i class="el-icon-success"></i>
                <i class="el-icon-warning"></i>
                <small>错误信息</small>
            </div>
            <div class="form_control" id="form_control">
                <label for="">邮箱</label>
                <input type="text" placeholder="请输入邮箱" id="email"/>
                <i class="el-icon-success"></i>
                <i class="el-icon-warning"></i>
                <small>错误信息</small>
            </div>
            <div class="form_control" id="form_control">
                <label for="">密码</label>
                <input type="password" placeholder="请输入密码" id="password"/>
                <i class="el-icon-success"></i>
                <i class="el-icon-warning"></i>
                <small>错误信息</small>
            </div>
            <div class="form_control" id="form_control">
                <label for="">重复密码</label>
                <input type="password" placeholder="请输入重复密码" id="password2"/>
                <i class="el-icon-success"></i>
                <i class="el-icon-warning"></i>
                <small>错误信息</small>
            </div>
            <button type="submit">提交</button>
        </form> 
    </div>
    <script>
        const form = document.getElementById("form");
        const username= document.getElementById("username");
        const email = document.getElementById("email");
        const password = document.getElementById("password");
        const password2 = document.getElementById("password2");
        form.addEventListener('submit',(e)=>{
            e.preventDefault();//防止页面提交
            checkInputs();
        })
        function checkInputs(){
            const usernameValue = username.value.trim();//trim()去除输入值的空格
            const emailValue = email.value.trim();
            const passwordValue = password.value.trim();
            const password2Value = password2.value.trim();
            //用户名验证
            if(usernameValue===''){
                setError(username,"用户名不能为空");
            }else{
                setSuccess(username);
            }
            //邮箱验证
            if(emailValue===''){
                setError(email,"邮箱不能为空");
            }else if(!valiEmial(emailValue)){
                setError(email,"邮箱格式不正确,请重新输入");
            }else{
                setSuccess(email);
            }
            //密码验证
            if(passwordValue===''){
                setError(password,"密码不能为空");
            }else{
                setSuccess(password);
            }
            //重复密码验证
            if(password2Value===''){
                setError(password2,"密码不能为空");
            }else if(passwordValue!==password2Value){
                setError(password2,"两次密码输入不一致,请重新输入")
            }else{
                setSuccess(password2);
            }
        }
        function setError(element,msg){
            const element_par = element.parentElement;
            const message = element_par.querySelector('small');
            message.textContent = msg;
            //error是验证错误的样式,success是验证成功的样式
            element_par.classList.remove('success');
            element_par.classList.add('error');
        }
        function setSuccess(element){
            const element_par = element.parentElement;
            element_par.classList.remove('error');
            element_par.classList.add('success');
            //现在这块是错误得样式喝正确的样式混在一起,
            //所以必须在验证将之前的样式去除掉
        }
        function valiEmial(email){
            const regEmial = /^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/;
            return regEmial.test(email);
        }
    </script>
    </body>
</html>

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

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

相关文章

C++语法3——if switch break continue的定义及用法

接上节 循环语句 这一节写的是判断语句 if else语句 基本语法&#xff1a; 第一种&#xff1a; if(bool(布尔变量)) {如果bool值为真执行的语句; } else {如果bool值为假执行的语句; }如果布尔表达式为 true&#xff0c;则执行 if 块内的代码。如果布尔表达式为 false&#x…

2023北京/上海/广州/深圳物联网产品经理班招生简章

NPDP产品经理国际资格认证是国际公认的唯一的新产品开发专业认证&#xff0c;集理论、方法与实践为一体的全方位的知识体系&#xff0c;为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 我们针对互联网时代的个人、互联网企业、与传统企业推出一系列学习。 课程从…

第四十五讲:神州防火墙P2P流量控制配置

实验拓扑图如下所示 配置要求&#xff1a;出口带宽 100Mbps&#xff0c;外网为 eth0/1 接口&#xff0c; 内网连接两个网段172.16.1.0/24 和 192.168.1.0/24&#xff0c;需限制 P2P 应用其下行带宽为 10M&#xff0c;上传最大 5M。 配置步骤&#xff1a; 一、指定接口带宽 …

Struts2框架之result配置

Struts2框架之result配置result配置1、常用的结果类型1.1、dispather类型1.2、redirect类型1.3、redirectAction类型2、全局结果配置result配置 result配置一般与页面相关&#xff0c;请求经由对应Action处理后&#xff0c;返回一个字符串&#xff0c;根据返回的字符串找到对应…

为了让5G更省电,这家设备商秀出黑科技

近日&#xff0c;工信部发布了我国最新的《通信业经济运行情况》数据。根据数据显示&#xff0c;截止到11月末&#xff0c;我国5G基站总数已经达到228.7万个&#xff0c;比2021年底增加了86.2万个。这些数量庞大的基站&#xff0c;共同构建了一张规模庞大的5G网络。而这张网络&…

YOLOv5 CPU实时的实例分割教程-它来了!

一个不知名大学生&#xff0c;江湖人称菜狗original author: jacky LiEmail : 3435673055qq.comTime of completion&#xff1a;2023.1.6Last edited: 2023.1.6YOLOv5 CPU实时的实例分割教程-它来了&#xff01;简介前不久&#xff0c;ultralytics发布了一个yolov5 7.0版本&…

yolov8s网络模型结构图

yolov8&#xff01;&#xff01;&#xff01;&#xff01; yolov8&#xff01;&#xff01;&#xff01;&#xff01; yolov8&#xff01;&#xff01;&#xff01;&#xff01; yolov8&#xff01;&#xff01;&#xff01;&#xff01; yolov8真的来了&#xff01;&#…

2023,本命年向阳而生

2023&#xff0c;本命年向阳而生 ——Maynor的2022复盘及2023目标 幸运且努力 先说结论&#xff1a;2022年是极不平凡的一年。 有很多重大事件发生&#xff0c;且与我们的生活息息相关。最令人高兴的是疫情的缓解&#xff0c;2023年也将有更多的机会。 我在这一年经历的事…

FFMPEG入门资料---001---介绍和参数说明

文档介绍 1.1 文档目的 整理出开源代码 ffmpeg 的资料&#xff0c; 方便公司同事后续使用。 1.2 文档范围 较为详细的介绍 ffmpeg 的功能、使用以及二次开发。 1.3 读者对象 希望了解 ffmpeg 知识&#xff0c; 从事 USM 及 IPTV 的同事。 1.4 参考文献 无 1.5 术语与缩…

AcWing 4655. 重新排序(差分+前缀和+贪心)

一、题目信息 二、思路分析 这道题的话&#xff0c;其实只看前一句话&#xff0c;我们应该用的是前缀和算法。但是这道题在此基础上做了改变&#xff0c;我们根据前缀和可以算出排序之前各个区间和的和。 根据题意&#xff0c;我们需要对数组重新排序&#xff0c;使得排序之后…

VMware Workstation安装ESXI8.0

&#x1f388; 作者&#xff1a;互联网-小啊宇 &#x1f388; 简介&#xff1a; CSDN 运维领域创作者、阿里云专家博主。目前从事 Kubernetes运维相关工作&#xff0c;擅长Linux系统运维、开源监控软件维护、Kubernetes容器技术、CI/CD持续集成、自动化运维、开源软件部署维护…

反射看这一篇文章就够了

第一章 反射的概述 第1节 反射的概念 Java的反射机制是指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法,并且对于任意一个对象,都能够调用它的任意一个方法,这种动态获取信息以及动态调用对象方法的功能称为Java的反射机制. 第2节 反射理解 1如果存在反射,那…

实现 SpringBoot 项目中的隐私数据脱敏

实现 SpringBoot 项目中的隐私数据脱敏什么是数据脱敏如何实现数据脱敏注解使用demo什么是数据脱敏 为了避免“用户信息泄露”的风险项&#xff08;就是后台系统里用户的一些隐私数据直接明文显示了&#xff09;&#xff0c;其实指的就是要做数据脱敏。数据脱敏&#xff1a;把…

谷歌浏览器自带的翻译功能无法使用的解决办法

谷歌浏览器自带的翻译功能无法使用的解决办法 到 C:\Windows\System32\drivers\etc 目录找到hosts文件用记事本或者notepad打开在文件末尾添加&#xff1a;142.250.4.90 translate.googleapis.com要有管理员的身份才可以对hosts文件进行修改修改完毕以后&#xff0c;打开cmd命令…

MySQL 如何查找删除重复行

如何查找重复行 第一步是定义什么样的行才是重复行。多数情况下很简单&#xff1a;它们某一列具有相同的值。本文采用这一定义&#xff0c;或许你对“重复”的定义比这复杂&#xff0c;你需要对sql做些修改。本文要用到的数据样本&#xff1a; create table test(id int not …

解决Vue使用UEditor百度编辑器,上传图片服务配置问题

前言 查看文档前先查看http://fex.baidu.com/ueditor/#server-jsp 理解手册基本配置 此文档只针对TomcatWeb服务 vue版本为2.0版本和 vue-cli2.0 环境配置 需求配置实际项目配置JDK 1.6java version “19.0.1” 2022-10-18Apache Tomcat 6.0Server version: Apache Tomcat…

狂神说笔记——Nginx快速入门28

Nginx快速入门 在低并发的情况下&#xff0c;一个jar包启动应用就够了&#xff0c;然后内部tomcat返回内容给用户。 随着用户越来越多了&#xff0c;并发量慢慢增大了&#xff0c;此时一台服务器满足不了需求了。 于是进行横向扩展&#xff0c;又增加了服务器。这个时候几个项目…

VTK-路径规划

前言&#xff1a;本博文主要研究VTK中路径规划相关的内容&#xff0c;后期会持续更新路径规划相关的拓展应用&#xff0c;希望能给各位小伙伴一些帮助&#xff0c;也希望小伙伴们多多关注支持。 vtkGraphGeodesicPath 位置&#xff1a;..\Filter\Modeling 描述&#xff1a;路…

DDS 发送大数据

Sending Large DataThis section describes the capabilities offered by Connext DDS—specifically, RTI FlatData™ language binding and Zero Copy transfer over shared memory—that allow sending and receiving large data samples with minimum latency. In this sec…

Oracle 19c - 手动升级到 Non-CDB Oracle Database 19c 的完整核对清单 (Doc ID 2577572.1)

Oracle 19c - 手动升级到 Non-CDB Oracle Database 19c 的完整核对清单 (Doc ID 2577572.1)正在上传…重新上传取消To Bottom 文档内容 用途适用范围详细信息关于新的 Autoupgrade utility步骤 1: 升级到数据库 19c 的升级路径能够直接升级到 Oracle 19c 的数据库最小版本以下…