js如何实现验证码(js识别验证码)

css代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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代码:

1
2
3
4
5
6
<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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
$(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})`
 
            }
 
        })

随便写的案例,有错误还请大家多多指教

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/124019.html

(0)
robot
上一篇 2022-05-18
下一篇 2022-05-18

相关推荐

  • dockerfile如何设置环境变量

    在Dockerfile中设置环境变量可以通过使用ENV指令来实现。以下是一个示例Dockerfile,演示如何设置环境变量:# 使用基础镜像FROM ubuntu:latest# 设置环境变量ENV MY_ENV_VAR my_value# 其他指令…在上面的示例中,我们使用ENV指令来设置一个名为MY_ENV_VAR的环境变量,并将其值设置为my_value。在构建镜像时,这个环境变量

    2024-03-26
    0
  • 服务器如何开端口(服务器如何开通端口)

    服务器如何开端口,服务器如何开通端口内容导航:怎样开启服务器80端口服务器怎么开端口如何查看服务器所开放的端口服务器开3389端口,还是不能远程是怎么回事,一、怎样开启服务器80端口一般来说服务器的80端口本身就是开启的,只要安装相关应用程序就可以使用,如果存在无法访问的现象,一般有以下的原因。1.防火墙或者服务商控制台安全组的

    2022-04-14
    0
  • 苹果手机如何添加邮箱(苹果手机如何添加邮箱地址)

    苹果手机如何添加邮箱,苹果手机如何添加邮箱地址 内容导航: 苹果手机怎么设置163邮箱 iphone如何配置手机邮箱 是怎么回事我的苹果手机添加邮箱账号时总提示你的用户名或密码不正…

    2022-08-14
    0
  • 400电话如何开通(如何开通400全国服务电话)

    400电话如何开通,如何开通400全国服务电话 内容导航: 400电话怎么办理申请开通 400电话怎么快速开通 400电话怎么开通 400电话如何申请办理 一、400电话怎么办理申…

    2022-05-19
    0
  • 「咖啡色底版配什么颜色的字体好看」咖啡色配什么颜色好看

    咖啡色底版配什么颜色的字体好看,咖啡色底板配什么色的字好看内容导航:咖啡色背景配什么颜色的字好看咖啡色背景配什么颜色的字好看拜托了各位谢谢咖啡色配什么颜色好看深咖色外套搭配什么颜色的围巾时尚一、咖啡色背景配什么颜色的字好看个人认为是白色比较好看。如果觉得太白了刺眼的话,可以适当朝着咖啡色的色调稍微调灰一点二、咖啡色背景配什么颜色的字好看拜托了各位谢谢在做PPT….背景是

    2022-05-10
    0
  • 什么是视觉层次(视觉的最高层次是)

    什么是视觉层次,视觉的最高层次是 内容导航: 如何有效建立视觉层级 什么是视觉传达设计中的深度层次 什么是层次感 怎样加强腮红的层次与视觉强度 一、如何有效建立视觉层级 为页面,尤…

    2022-08-24
    0