使用JS怎样实现带干扰验证码,代码如何写
Admin 2022-07-04 群英技术资讯 945 次浏览
今天就跟大家聊聊有关“使用JS怎样实现带干扰验证码,代码如何写”的内容,可能很多人都不太了解,为了让大家认识和更进一步的了解,小编给大家总结了以下内容,希望这篇“使用JS怎样实现带干扰验证码,代码如何写”文章能对大家有帮助。本文实例为大家分享了js实现验证码的具体代码,供大家参考,具体内容如下

css代码:
input{
width: 200px;
height: 32px;
border: 1px solid #000;
box-sizing: border-box;
}
#c1{
vertical-align: middle;
box-sizing: border-box;
cursor: pointer;
}
#btn{
display: block;
margin-top: 20px;
height: 32px;
font-size: 16px;
}
HTML代码:
<div class="code">
<input type="text" value="" id="inputValue" placeholder="请输入验证码(不区分大小写)">
<canvas id="c1" width="100" height="30" style="border:1px solid black"></canvas>
<br>
<button id="btn">提交</button>
</div>
js代码:
使用了部分jQuery的方法,请记得先引入jQuery
$(function(){
// 存放随机的验证码
var showNum = []
draw(showNum)
$("#c1").click(function(){
draw(showNum)
})
$("#btn").click(function(){
var s = $("#inputValue").val().toLowerCase()
var s1 = showNum.join("")
if (s==s1) {
alert("提交成功")
}else{
alert("验证码错误")
}
draw(showNum)
})
// 封装一个把随机验证码放在画布上
function draw(showNum){
// 获取canvas
var canvas = $("#c1")
var ctx = canvas[0].getContext("2d")
// 获取画布的宽高
var canvas_width = canvas.width()
var canvas_height = canvas.height()
// 清空之前绘制的内容
// 0,0清空的起始坐标
// 矩形的宽高
ctx.clearRect(0,0,canvas_width,canvas_height)
// 开始绘制
var scode = "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,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,1,2,3,4,5,6,7,8,9,"
var arrCode = scode.split(",")
var arrLength = arrCode.length
for(var i = 0;i<4;i++){
var index = Math.floor(Math.random()*arrCode.length)
var txt = arrCode[index]//随机一个字符
showNum[i] = txt.toLowerCase()//转化为小写存入验证码数组
// 开始控制字符的绘制位置
var x = 10 +20*i //每一个验证码绘制的起始点x坐标
var y = 20 + Math.random()*8// 起始点y坐标
ctx.font = "bold 20px 微软雅黑"
// 开始旋转字符
var deg = Math.random*-0.5
// canvas 要实现绘制内容具有倾斜的效果,必须先平移,目的是把旋转点移动到绘制内容的地方
ctx.translate(x,y)
ctx.rotate(deg)
// 设置绘制的随机颜色
ctx.fillStyle = randomColor()
ctx.fillText(txt,0,0)
// 把canvas复原
ctx.rotate(-deg)
ctx.translate(-x,-y)
}
for(var i = 0;i<30;i++){
if (i<5) {
// 绘制线
ctx.strokeStyle = randomColor()
ctx.beginPath()
ctx.moveTo(Math.random()*canvas_width,Math.random()*canvas_height)
ctx.lineTo(Math.random()*canvas_width,Math.random()*canvas_height)
ctx.stroke()
}
// 绘制点
ctx.strokeStyle = randomColor()
ctx.beginPath()
var x = Math.random()*canvas_width
var y = Math.random()*canvas_height
ctx.moveTo(x,y)
ctx.lineTo(x+1,y+1)
ctx.stroke()
}
}
// 随机颜色
function randomColor(){
var r = Math.floor(Math.random()*256)
var g = Math.floor(Math.random()*256)
var b = Math.floor(Math.random()*256)
return `rgb(${r},${g},${b})`
}
})
随便写的案例,有错误还请大家多多指教
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了vue使用watch监听器的基本使用方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
Object.freeze(obj)可以冻结一个对象。一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删除已经属性,不能修改该对象已有属性的可枚举性、可配置性、可写性、以及不能修改已有属性的值。
node安装失败2503的解决办法:1、在WIN搜索框搜索powershell并右击;2、点击使用管理员身份运行powershell命令行工具;3、输入“msiexec /package node”;4、打开安装包,根据提示安装即可。
本篇文章带大家了解一下Angular中的独立组件,看看怎么在Angular中创建一个独立组件,怎么在独立组件中导入已有的模块,希望对大家有所帮助!
我们在做网站页面的时候,如果页面的内容太多,我们可以做分页或者做滚动加载更多,这篇文章就给大家分享关于使用JavaScript实现滚动加载更多的代码,小编觉得是比较实用的,因此分享给大家做参考。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008