使用JS怎样实现带干扰验证码,代码如何写
Admin 2022-07-04 群英技术资讯 483 次浏览
本文实例为大家分享了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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要为大家介绍了JS继承与工厂构造及原型设计模式详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
前言在直播中,创建房间,获取房间,都需要服务器,因此需要搭建Web服务器Web服务器能处理HTTP请求的服务器都可以叫Web服务器Node.js介绍Node.js什么时候出现,2009年,Ryan Dahl(瑞恩·达尔)在GitHub上发布了最初版本的部分Node.
最常见的多环境配置,就是开发环境配置,和生产环境配置,本文主要介绍了vue项目多环境配置的实现,感兴趣的可以了解一下
本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了事件循环的相关内容,下面一起来看一下,希望对大家有帮助。
这篇文章主要为大家详细介绍了jQuery实现广告显示和隐藏动画,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008