js-验证码

其实验证码的主要用到了js 中的Math.random(),以及math.floor这两个方法如果在此之前还不懂的可以在这里查阅此方法https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/floor

话不多说上码~

<body onload= "createCode()">
	<div class="wrap">
		<input type="text" id="text" placeholder = "请输入验证码" >
		<a href="javascript:" id="code" onclick="createCode()"></a>
		<input type="button" id="btn" value="验证" onclick="Verification()">
	</div> </body>	<div class="wrap">
		<input type="text" id="text" placeholder = "请输入验证码" >
		<a href="javascript:" id="code" οnclick="createCode()"></a>
		<input type="button" id="btn" value="验证" οnclick="Verification()">
	</div> </body>
<style type="text/css">
	*{ margin: 0; padding: 0; }
		.wrap{
			width: 500px;
			margin: 20px auto;
		}
		#text{
			height: 30px;
			box-sizing: border-box;
			vertical-align: middle;
			text-indent: 1em;
		}
		#code{
			display: inline-block;
			width: 80px; height: 30px;
			background: #aaa;
			text-align: center;
			line-height: 30px;
			color: #fff;
			text-decoration: none;
			letter-spacing: 7px;
			padding-left: 7px;
			vertical-align: middle;
			font-weight: bold;
		}
		#btn{
			width: 60px; height: 30px;
			outline: 0;
			border: #153021;
			background: #499990;
			color: #fff;
			border-radius: 5px;
		}
	</style>

这个是静态铺完之后的样子

接下来我们考虑逻辑部分

获取灰色框框以及按钮的id

var block=document.getElementById('code')
var bt=document.getElementById('btn');

接着定义一个变量用于后面储存长度为4位数的验证码

var code='';//存放验证码

定义一个函数用于创建验证码

function createCode () {
			var codes= [0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R', 'S','T','U','V','W','X','Y','Z'];
			var codeLg=4;
			for (var i=0;i<codeLg;i++) {
				var newCode=Math.floor(Math.random()*codes.length)//随机返回1-36之间的数字
				code=code+codes[newCode]; 
			}
			block.innerHTML=code
		}

做到这里

我们会发现每当点击更新验证码的时候,验证码不断叠加。这个bug我们放到后面讲

接下来考虑验证的逻辑

function Verification () {
			var tx=document.getElementById('text').value.toUpperCase()//获取文本框内容转换成大写
			if (tx=='') {
				alert('请输入验证码')
			}else  if(tx!=code) {
				alert('验证错误请重新输入')
				tx='';
				createCode()//重新刷新验证码
			}else{
				alert('success')
			}
		}

最后我们来解决一下前面遗留的bug

看看前面的代码的for循环

		code=''
			var codes= [0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R', 'S','T','U','V','W','X','Y','Z'];
			var codeLg=4;
			for (var i=0;i<codeLg;i++) {
				var newCode=Math.floor(Math.random()*codes.length)//随机返回1-36之间的数字
				code=code+codes[newCode]; 
			}
			block.innerHTML=codecode=''
			var codes= [0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R', 'S','T','U','V','W','X','Y','Z'];
			var codeLg=4;
			for (var i=0;i<codeLg;i++) {
				var newCode=Math.floor(Math.random()*codes.length)//随机返回1-36之间的数字
				code=code+codes[newCode]; 
			}
			block.innerHTML=code

刚刚之前也说了code边量是用来储存验证码的

也就是说每执行一次for循环就给code变量存放4位数的验证码,而且4位验证码会不断叠加

所以我们每次执行createCode ()之前吧code里面的值清空就不会出现叠加这种情况了

也就是这样

	function createCode () {
			code=''
			var codes= [0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R', 'S','T','U','V','W','X','Y','Z'];
			var codeLg=4;
			for (var i=0;i<codeLg;i++) {
				var newCode=Math.floor(Math.random()*codes.length)//随机返回1-36之间的数字
				code=code+codes[newCode]; 
			}
			block.innerHTML=code
		}

好的以上就是js验证码的制作

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值