原生JS项目练习——验证码的生成及教验

news/2024/5/1 14:44:34/文章来源:https://blog.csdn.net/m0_45142186/article/details/127181831

一、主要功能介绍:

        1、通过for循环生成生成六位随机验证码

        2、通过for循环随机生成验证码颜色

        3、窗口加载事件,窗口一加载就调用函数,重置验证码

        4、按钮点击事件,一点击就调用函数,重置验证码

        5、input输入框已失去焦点就进行验证

        6、正则表达式验证输入内容是否符合条件

        7、如果输入验证码和随机生成的验证码相同,在后方显示绿色正确标签

        

二、详细步骤解析:

HTML和CSS代码:

html代码:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>验证码</title><link rel="stylesheet" href="verification.css">
</head><body><div class="container"><h2>欢迎注册</h2><p class="account">已有账号?<span>登录</span></p><form action=""><ul><li><span>用户名:</span><input type="text" placeholder="请设置用户名"></li><li><span>手机号:</span><input type="text" placeholder="可用于登录和找回密码"></li><li><span class="password">密&nbsp&nbsp&nbsp码:</span><input type="text" placeholder="请设置用户密码"></li><li><span id="veri_num">123456</span><button id="toggle">看不清换一张</button><span id="signal">√</span></li><li><span>验证码:</span><input type="text" placeholder="请输入验证码" id="verification"></li><li><button type="submit" id="register">注册</button></li></ul></form></div></body></html>

css文件:

css代码主要是想复习一下之前的form表单,没必要写这么多的。

* {margin: 0;padding: 0;
}input {outline: none;
}li {list-style: none;
}.container {padding: 30px;margin: 0 auto;width: 400px;height: 500px;background-color: #f0f0f3;border-radius: 15px;
}.container h2 {font-size: 30px;
}.container .account {color: #adadad;font-size: 12px;
}.container .account span {color: blue;
}form {margin-top: 30px;color: grey;
}form input {padding-left: 20px;width: 260px;height: 30px;
}form ul li {margin-bottom: 30px;
}form ul li span {line-height: 30px;text-align: right;display: inline-block;width: 80px;height: 30px;
}/* #verification {width: 270px;
} */#veri_num {margin-left: 10px;width: 130px;height: 35px;line-height: 35px;box-sizing: border-box;background-color: #fff;border: 0;border-radius: 3px;font-size: 20px;font-weight: 600;font-family: sans-serif;color: blue;text-align: center;margin-left: 85px;
}#register {margin-top: 30px;width: 400px;height: 50px;border-radius: 25px;background-color: #295ce7;color: #fff;border: 0;
}#checkbox {width: 15px;height: 15px;line-height: 0;font-size: 14px;vertical-align: bottom;
}#toggle {width: 120px;height: 30px;border: 0;background-color: transparent;color: rgb(11, 115, 200);font-size: 14px;
}#signal {display: none;width: 15px;height: 15px;border-radius: 8px;line-height: 15px;text-align: center;background-color: rgb(34, 171, 34);margin-left: 0;color: #fff;
}

javascript代码部分:

表示 min~max两个数之间的随机整数公式   Math.round(Math.random()*(max-min)+min)

核心就是定义了一个数组,将验证码中能出现字符的都列出来

用Math.random()方法,他会随机出现一个0~1的数

Math.random()*(17-0)+0  就会出现随机一个0~17的值--->十八个数

用Math.round()方法进行四舍五入,就会出现0~17的随机整数

用  数组名[序列号]  数组[0~17的随机整数]就能表示    0~9加上a~h

 <script>// 窗口加载事件window.addEventListener("load", function() {getVerification();});// 获取切换验证码按钮var toggle = document.querySelector("#toggle");// 获取验证码的span标签var veri_num = document.querySelector("#veri_num");// 获取verification输入验证码的inputvar verification = document.querySelector("#verification");// 获取验证码后面的绿色小圆圈var signal = document.querySelector("#signal");// 点击切换验证码按钮,就切换veri_num.addEventListener("click", function() {getVerification();return false;});// 设置正则表达式,验证输入的内容是否符合条件var reg = /^[0-9a-h]{6}$/;function getVerification() {var str = '';// 定义数组验证码的所有情况var arr = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h"];// 验证码的所有颜色var arrColor = ["red", "orange", "pink", "purple", "blue"];for (var i = 0; i < 6; i++) {var num = Math.round(Math.random() * (17 - 0));str += arr[num];var nums = Math.round(Math.random() * (4 - 0));document.querySelector("#veri_num").style.color = arrColor[nums];}veri_num.innerHTML = str;}// verification失去焦点后验证输入的验证码是否正确verification.addEventListener("blur", function() {// 获取input里面的值var value = verification.value;if (reg.test(value)) {// 如果格式正确验证输入的值对不对if (veri_num.innerHTML == value) {// 显示后面的绿色小圆圈signal.style.display = "inline-block";} else {signal.style.display = "none";alert("输入验证码不正确~");// 不正确就清空input框verification.value = '';}} else {signal.style.display = "none";alert("输入验证码格式不正确~");// 不正确就清空input框verification.value = '';}})</script>

里面的注释很详细了,如果有bug欢迎评论,会第一时间进行修改!

感谢:@有鱼是只猫

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

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

相关文章

Yarn概述

Hadoop系列 注&#xff1a;大家觉得博客好的话&#xff0c;别忘了点赞收藏呀&#xff0c;本人每周都会更新关于人工智能和大数据相关的内容&#xff0c;内容多为原创&#xff0c;Python Java Scala SQL 代码&#xff0c;CV NLP 推荐系统等&#xff0c;Spark Flink Kafka Hbase…

公众号网课搜题接口系统

公众号网课搜题接口系统 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查题校园题库&#xff1a;查题校园题库后台&#xff08;…

快速开发微信小程序之二-微信支付

一、背景 在面试程序员的时候&#xff0c;有两项经历会带来比较大的加分&#xff0c;第一你是否做过支付金融相关的业务&#xff0c;第二你是否写过底层框架中间件代码&#xff0c;今天我们聊一下微信支付是如何对接的。 二、相关概念 1、微信商户平台 要使用微信支付&#…

一、mini2440_bsp_led

一、芯片手册 1、板子原理图 2、GPIO使用 &#xff08;1&#xff09;GPxCON &#xff08;2&#xff09;GPxDAT 二、实现分析 1、初始化led 设置GPBCON&#xff08;0x56000010&#xff09;为 0x00015400 2、设置led输出&#xff0c;根据原理图引脚输出低电平时灯被点亮 LED1…

K8s-临时容器 Ephemeral Containers

临时容器 Ephemeral Containers 当由于容器崩溃或容器镜像不包含调试工具而导致 kubectl exec 无用时&#xff0c; 临时容器对于交互式故障排查很有用。尤其是&#xff0c;Distroless 镜像 允许用户部署最小的容器镜像&#xff0c;从而减少攻击面并减少故障和漏洞的暴露。 由于…

C | 枚举?看一遍就够了

CSDN话题挑战赛第2期 参赛话题&#xff1a;学习笔记 啊我摔倒了..有没有人扶我起来学习.... 目录前言枚举1. 枚举的定义2. 枚举的内存大小3. 枚举的优势4. 枚举需要注意的地方前言 结构体、枚举、联合体都是自定义类型&#xff0c;结构体主要知识点结构体内存对齐可参考《C | …

九月SLAM相关论文速递

九月SLAM相关论文速递 论文列表DirectTracker: 3D Multi-Object Tracking Using Direct Image Alignment and Photometric Bundle Adjustment3D VSG: Long-term Semantic Scene Change Prediction through 3D Variable Scene GraphsLeveraging Large Language Models for Robo…

使用服务器跑模型——案例1

案例1 该方法mac&#xff0c;linux&#xff0c;windows都通用。我们使用terminal or cmd进行操作。 假设我们本地具有一个需要跑的模型Unet&#xff0c;我们需要将该模型上传到服务器上跑&#xff0c;步骤如下&#xff1a; 使用tar压缩文件 我们定位到我们需要压缩的模型&a…

云原生之容器编排实践-以k8s的Service方式暴露SpringBoot服务

背景 上一篇文章云原生之容器编排实践-SpringBoot应用以Deployment方式部署到minikube以及弹性伸缩中&#xff0c;我们通过 Deployment 完成了将 SpringBoot 应用部署到 minikube 并测试了其弹性伸缩的丝滑体验。但是 Deployment 部署后我们还面临以下问题&#xff1a; 访问时…

Day761.Redis集群方案:Codis -Redis 核心技术与实战

Redis集群方案&#xff1a;Codis Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于Redis集群方案&#xff1a;Codis Redis 的切片集群使用多个实例保存数据&#xff0c;能够很好地应对大数据量的场景。哨兵集群&#xff0c; Redis 官方提供的切片集群方案 Redis Clus…

SPI总线通信——基于STM32MP157A

SPI总线概念 SPI总线是Motorola首先提出的全双工三线/四线同步串行总线&#xff0c;采用主从模式&#xff08;Master Slave&#xff09;架构&#xff1b;支持多从机&#xff08;slave&#xff09;模式应用&#xff0c;一般仅支持单主机&#xff0c;多从机。 时钟由主机控制&…

java培训技术处理模型数据之 ModelAndView

处理模型数据之 ModelAndView 1 ModelAndView介绍 控制器处理方法的返回值如果为 ModelAndView, 则其既包含视图信息&#xff0c;也包含模型 数据信息。 2&#xff09;添加模型数据: MoelAndView addObject(String attributeName, Object attributeValue) ModelAndView…

C#-设计模式学习笔记

目录前言&#xff1a;最近得到师傅指点&#xff0c;建议我多学习下设计模式&#xff0c;简单记录下学习过程中的一些知识点1.设计模式&#xff08;创建型&#xff09;1.单例模式&#xff1a;1. 单例模式的主要作用2.单例模式能解决的问题3.单例模式的使用场景4.怎么实现单例模式…

Charles安装和抓包原理

进行APP服务器开发&#xff0c;接口测试、bug定位&#xff0c;抓取移动端请求数据包在所难免&#xff0c;公司使用的Charles&#xff0c;后面有机会使用了其它软件再做对比。Charles并不是安装即可用&#xff0c;涉及一些参数配置&#xff0c;特此记录分享。 1 安装、破解Char…

C51之温湿度检测系统(自动开关风扇)

目录 DHT11 温湿度传感器 产品概述 特点 检测模块是否存在 温湿度数据管理系统 uart.c文件 uart.h文件 lcd1602.c文件 lcd1602.H文件 dht11.c文件 dht11.h文件 delay.c文件 delay.h文件 config.h文件 main.c文件 DHT11 温湿度传感器 产品概述 DHT11数字温湿度传感…

2022/10/6——基于stm32mp157a的SPI实验

SPI总线是Motorola首先提出的全双工三线/四线同步串行总线 采用主从模式架构&#xff0c;支持多从机模式应用&#xff0c;但一般仅支持单主机&#xff0c;多从机 时钟由主机控制&#xff0c;在时钟移位脉 冲下&#xff0c;数据按位传输&#xff0c;高位在前&#xff0c;低位在…

网课查题系统-题库量全网最多

网课查题系统-题库量全网最多 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查题校园题库&#xff1a;查题校园题库后台&#x…

React源码分析4-深度理解diff算法

上一章中 react 的 render 阶段&#xff0c;其中 begin 时会调用 reconcileChildren 函数&#xff0c; reconcileChildren 中做的事情就是 react 知名的 diff 过程&#xff0c;本章会对 diff 算法进行讲解。 diff 算法介绍 react 的每次更新&#xff0c;都会将新的 ReactElem…

Learning With Error(LWE)问题学习

概念 又称误差还原&#xff0c;容错学习问题&#xff0c;即已知一个矩阵AAA以及一个向量&#xff0c;求解 b^Axe\hat{b}A xe b^Axe 这里eee是一个固定数值范围内随机采集的一个随机噪音向量&#xff0c;所以这个问题就转化为通过AAA和b^\hat{b}b^来还原最初的未知向量xxx 可以…

android studio2021.3.1 最新xposed模块编写指南

前言 最新的xposed框架已经从xposed到Edxposed再到Lsposed&#xff0c;虽然xposed的api依然是通用的82版本&#xff0c;但现在网上大多数的在android studio上配置xposed的教程已经有点落后了&#xff0c;因此写下这篇来记录自己安装的流程。lsposed如何安装可以看我之前的小米…