js实现随机8位验证码


Posted in Javascript onJuly 24, 2020

开发思路:

1.画出放置验证码的模块、一个写有“看不清…”的小块,以及输入验证码的文本框
2.获取各个模块
3.封装一个函数Yan_ma(),设置验证码为8位,里面含有数字,小写字母,小写字母和中文。每种类型出现的可能性为25%。
4.随机数字在0-9,之间。对Math.ramand()向下取整。
5.随机大小写字母使用fromCharCode() 方法:将 Unicode 编码转为一个字符,例如:

var n = String.fromCharCode(65);
cosole.log(n);
//输出j结果为A

大写字母(65-91) 小写字母(97-123)

var s = String.fromCharCode(Math.floor(Math.random() * 26 + 65));
var s = String.fromCharCode(Math.floor(Math.random() * 26 + 97));

6.随机中文,声明变量letter放置中文字符串,使用charAt()随机在letter中获得某个汉字。

var letter = "如若可以亲爱的请许我青灯墨下执一笔素笺今生为你吟尽千回百转念";
var s = letter.charAt(Math.floor(Math.random() * letter.length));

7.给每位验证码设随机的颜色,字体大小,相对文本位置,旋转角度。给颜色封装一个函数,使用十六进制颜色(如:#ffffff)

//随机颜色
 function fontcolor(){
  var s1="";
  for(var k=0;k<6;k++){
   var z=[0,1,2,3,4,5,6,7,8,9,"a","b","c","d","e","f"];
   var m=z[Math.floor(Math.random() * z.length)];
   s1 +=m;
  }
  return "#"+s1;
  }

随机位置和随机旋转角度的方法相同

随机位置可能为向上下左右偏移 8px, 随机旋转角度可能为绕着z轴旋转(±45度)。

8.提前声明一个空字符串 str 让每位验证码用字符串连接起来.

var s = String.fromCharCode(Math.floor(Math.random() * 26 + 97));
str+="<span style ='transform:rotatez("+ zhuan +"deg);left:"+topset+"px; color: " +color +" ;font-size:"+size+"px ;top:"+topset+"px'>"+s+"</span>";
 arr+=s;

9.让8位验证码出现在第一个大模块中的innerHTML中。

10.给写有“看不清”的span标签添加点击事件,点击时,调用函数Yan_ma,刷新验证码。

11.如果输入的验证码不正确,则弹出“验证成功”,否则弹出“验证失败”。

<!DOCTYPE html>
<html>
<head lang="en">
 <meta charset="UTF-8">
 <title>随机验证码</title>
 <script>
 var arr="";
 window.onload=function() {
  var maa = document.getElementsByClassName("block")[0];
  var looking = document.getElementById("look");
  var put = document.getElementById("text");
  var btnn = document.getElementById("btn");
  Yan_ma(maa);
  looking.onclick=function (){
  Yan_ma(maa);
  };
  btnn.onclick=function(){
  if(put.value.toLowerCase()==arr.toLowerCase()){
   alert ("验证成功");
  }
  else{
   alert ("验证失败");
   Yan_ma(maa);
  }
  }

 };


  function Yan_ma(aim) {
  arr ="";
  var str="";
  for (var i = 0; i < 8; i++) {
   //随机数 Math.random 0-1 的随机值
   var n = Math.random();
   //随机颜色
   var color=fontcolor();
   //随机大小
   var size=Math.floor (Math.random ()*12 +20);
   //随机位置
   var g=Math.random() <0.5 ? -1: 1;
   var topset=Math.random ()*g*8;
   //随机旋转
   var h=Math.random() <0.5 ? -1: 1;
   var zhuan=Math.random ()*h*45;
   if (n < 0.25) {
   //随机数字
   var s = Math.floor(Math.random() * 10);
   str+="<span style='transform:rotatez("+ zhuan +"deg);left:"+topset+"px; color: " +color +";font-size:"+size+"px ;top:"+topset+"px'>"+s+"</span>";
   arr+=s;
   }
   //随机大写字母 //65-91
   else if (n >= 0.25 && n < 0.5) {
   var s = String.fromCharCode(Math.floor(Math.random() * 26 + 65));
   str+="<span style='transform:rotatez("+ zhuan +"deg); left:"+topset+"px; color: " +color +";font-size:"+size+"px ;top:"+topset+"px'>"+s+"</span>";
   arr+=s;
   }
   //随机小写字母 97-123
   else if (n >=0.5 && n < 0.75) {
   var s = String.fromCharCode(Math.floor(Math.random() * 26 + 97));
   str+="<span style ='transform:rotatez("+ zhuan +"deg);left:"+topset+"px; color: " +color +" ;font-size:"+size+"px ;top:"+topset+"px'>"+s+"</span>";
   arr+=s;
   }
   //随机文字
   else {
   var letter = "如若可以亲爱的请许我青灯墨下执一笔素笺今生为你吟尽千回百转念";
   var s = letter.charAt(Math.floor(Math.random() * letter.length));
   str+="<span style='transform: rotatez("+ zhuan +" deg) ; left:"+topset+"px; color: " +color +";font-size:"+size+"px;top:"+topset+"px '>"+s+"</span>";
   arr+=s;
   }
  }
  aim.innerHTML =str;
  }

  function fontcolor(){
  var s1="";
  for(var k=0;k<6;k++){
   var z=[0,1,2,3,4,5,6,7,8,9,"a","b","c","d","e","f"];
   var m=z[Math.floor(Math.random() * z.length)];
   s1 +=m;
  }
  return "#"+s1;
  }

 </script>
 <style>
 .block{
  width:250px;
  height:60px;
  background:url("bg2.png") no-repeat center;
  background-size: 100%;
  text-align: center;
  line-height: 60px;
 }
 .block span{
  position: relative;
  display: inline-block;
  width:20px;
  margin:5px 3px;
 }
 #look{
  color: #9200ff;
 }
 #look:hover{
  cursor: pointer;
 }
 </style>
</head>
<body>
<div class="block">
</div>
<span id="look">看不清...</span>
<br/>
<input type="text" id="text" placeholder="请输入验证码" />
<button id="btn">验证</button>
</body>
</html>

出现的验证码

js实现随机8位验证码

当输入正确验证码时

js实现随机8位验证码

当没输入错误验证码时

js实现随机8位验证码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
动态样式类封装JS代码
Sep 02 Javascript
jquery获取自定义属性(attr和prop)实例介绍
Apr 21 Javascript
js判断浏览器类型的方法
Aug 07 Javascript
javascript 获取图片尺寸及放大图片
Sep 04 Javascript
使用JS获取当前地理位置方法汇总
Dec 18 Javascript
JavaScript中 this 指向问题深度解析
Feb 21 Javascript
javascript标准库(js的标准内置对象)总结
May 26 Javascript
bootstrap 路径导航 分页 进度条的实例代码
Aug 06 Javascript
详解React项目如何修改打包地址(编译输出文件地址)
Mar 21 Javascript
vue组件间的参数传递实例详解
Apr 26 Javascript
浅谈关于vue中scss公用的解决方案
Dec 02 Javascript
Vue通过provide inject实现组件通信
Sep 03 Javascript
Vue中全局变量的定义和使用
Jun 05 #Javascript
详解express使用vue-router的history踩坑
Jun 05 #Javascript
laravel-admin 与 vue 结合使用实例代码详解
Jun 04 #Javascript
用webpack4开发小程序的实现方法
Jun 04 #Javascript
JS实现的对象去重功能示例
Jun 04 #Javascript
JS数组中对象去重操作示例
Jun 04 #Javascript
jquery UI实现autocomplete在获取焦点时得到显示列表功能示例
Jun 04 #jQuery
You might like
Yii2中使用join、joinwith多表关联查询
2016/06/30 PHP
PHP实现的AES双向加密解密功能示例【128位】
2018/09/03 PHP
去除链接虚线全面分析总结
2006/08/15 Javascript
Js+XML 操作
2006/09/20 Javascript
基于jquery的direction图片渐变动画效果
2010/05/24 Javascript
cnblogs TagCloud基于jquery的实现代码
2010/06/11 Javascript
DOM Scripting中的图片切换[兼容Firefox]
2010/06/12 Javascript
function foo的原型与prototype属性解惑
2010/11/19 Javascript
js使用eval解析json(js中使用json)
2014/01/17 Javascript
使用jQuery不判断浏览器高度解决iframe自适应高度问题
2014/12/16 Javascript
JS基于Mootools实现的个性菜单效果代码
2015/10/21 Javascript
nodejs中向HTTP响应传送进程的输出
2017/03/19 NodeJs
详解使用Visual Studio Code对Node.js进行断点调试
2017/09/14 Javascript
jQuery实现的form转json经典示例
2017/10/10 jQuery
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
JS正则表达式常见用法实例详解
2018/06/19 Javascript
微信小程序实现搜索功能并跳转搜索结果页面
2019/05/18 Javascript
layui 对弹窗 form表单赋值的实现方法
2019/09/04 Javascript
梳理一下vue中的生命周期
2020/12/30 Vue.js
详解vite2.0配置学习(typescript版本)
2021/02/25 Javascript
Python部署web开发程序的几种方法
2017/05/05 Python
Python实现购物系统(示例讲解)
2017/09/13 Python
python使用代理ip访问网站的实例
2018/05/07 Python
Python 最大概率法进行汉语切分的方法
2018/12/14 Python
python开发之anaconda以及win7下安装gensim的方法
2019/07/05 Python
关于Python不换行输出和不换行输出end=““不显示的问题(亲测已解决)
2020/10/27 Python
城市观光通行证:The Sightseeing Pass
2018/04/28 全球购物
法学专业本科生自荐信范文
2013/12/17 职场文书
《桂林山水》教学反思
2014/02/08 职场文书
公司聘任书模板
2014/03/29 职场文书
《去年的树》教学反思
2014/04/11 职场文书
应聘销售主管的求职信
2014/04/26 职场文书
七夕活动策划方案
2014/08/16 职场文书
入党介绍人意见2015
2015/06/01 职场文书
格列佛游记读书笔记
2015/06/30 职场文书
redis cluster支持pipeline的实现思路
2021/06/23 Redis