js实现验证码案例

 更新时间:2021年10月29日 16:46:15   作者:Q青N年  
这篇文章主要为大家详细介绍了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})`
 
            }
 
        })

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

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

相关文章

  • JS动态给对象添加属性和值的实现方法

    JS动态给对象添加属性和值的实现方法

    下面小编就为大家带来一篇JS动态给对象添加属性和值的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • three.js中点对象(Point)和点材质(PointsMaterial)的具体使用

    three.js中点对象(Point)和点材质(PointsMaterial)的具体使用

    本文主要介绍了three.js中点对象(Point)和点材质(PointsMaterial)的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • 浅析js中substring和substr的方法

    浅析js中substring和substr的方法

    这篇文章主要介绍了js中substring和substr的方法,对substring和substr的方法进行描述和说明,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • JavaScript中ES6 Babel正确安装过程

    JavaScript中ES6 Babel正确安装过程

    这篇文章主要介绍了JavaScript中ES6 Babel正确安装过程的相关资料,需要的朋友可以参考下
    2016-07-07
  • 关于AOP在JS中的实现与应用详解

    关于AOP在JS中的实现与应用详解

    这篇文章主要给大家介绍了关于AOP在JS中的实现与应用的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用JS具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • uniApp实现热更新的思路与详细过程

    uniApp实现热更新的思路与详细过程

    经常在做app的时候,会有做热更新的需求,这也是常用的更新app的一种手段,下面这篇文章主要给大家介绍了关于uniApp实现热更新的思路与详细过程,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • uniapp导航栏组件使用步骤

    uniapp导航栏组件使用步骤

    在uni-app中,可以使用官方提供的uni-navigator组件来实现导航栏的功能,这篇文章主要介绍了uniapp导航栏组件如何使用,需要的朋友可以参考下
    2024-01-01
  • 浅谈JS中String()与 .toString()的区别

    浅谈JS中String()与 .toString()的区别

    下面小编就为大家带来一篇浅谈JS中String()与 .toString()的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • js+html5实现canvas绘制镂空字体文本的方法

    js+html5实现canvas绘制镂空字体文本的方法

    这篇文章主要介绍了js+html5实现canvas绘制镂空字体文本的方法,涉及html5文字效果的相关技巧,需要的朋友可以参考下
    2015-06-06
  • JavaScript实现body内任意节点的自定义属性功能示例

    JavaScript实现body内任意节点的自定义属性功能示例

    这篇文章主要介绍了JavaScript实现body内任意节点的自定义属性功能,涉及javascript针对DOM节点的获取及属性设置相关操作技巧,需要的朋友可以参考下
    2017-09-09

最新评论