canvas实现验证码

Html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <link rel="stylesheet" href="./code.css">
</head>
<body>
    <div class="wrapper">
        <div class="inputBox">
            <input type="text" placeholder="请输入验证码">
             <span></span>
        </div>
        <p class="error">验证码输入错误,请重新输入</p>
        <div class="canvansBox">
            <canvas id="myCanvans" width="300" height="80"></canvas>
            <div id="refresh"></div>
        </div>
        <button id="submitBtn">submit</button>
    </div>
    <script src="../js/jquery.js"></script>
    <script src="./code.js"></script>
</body>
</html>

CSS部分:

*{
    margin: 0;
    padding: 0;
}
.wrapper{
    width: 400px;
    height: 240px;
    border: 3px solid #ccc;
    margin: 10px;
}
.inputBox{
    width: 92%;
    margin-left: 4%;
    height: 60px;
    /* border: 1px solid black; */
    display: flex;
    /* justify-content: center; */
    align-items: center;
}
.inputBox input{
    padding: 10px;
    width: 300px;
    border: 2px solid #ccc;
    border-radius: 5px;
    /* border: none; */
}
.inputBox span{
    /* display: inline-block; */
    width: 30px;
    height: 30px;
    background: url('./error.png');
    background-size: 100%;
    margin-left: 6px;
    display: none;
}
.error{
    margin-left: 5%;
    margin-top: 10px;
    font-size: 14px;
    color: red;
    display: none;
}
.canvansBox{
    width: 92%;
    /* border: 1px solid black; */
    margin-left: 3%;
    margin-top: 10px;
    display: flex;
    justify-content: center;
    align-items: center;
}
#refresh{
    width: 32px;
    height: 32px;
    background: url('./refresh.png');
    background-size: 100%;
    margin-left: 30px;
    cursor: pointer;
}
#submitBtn{
    padding: 10px ;
    font-size: 20px;
    background: cornflowerblue;
    border: none;
    border-radius: 5px;
    margin-left: 3%;
    margin-top: 10px;
    cursor: pointer;
}

JS部分:

$(document).ready(function(){
    var arr = [];
    for(var i = 65; i < 122; i++){
        if(i > 90 && i < 97){
            continue;
        }
        arr.push(String.fromCharCode(i));
    }
    var value;
    function createCanvas(){
        var canvasStr = '';
        value = '';
        for(var i = 0 ; i < 6; i++){
            var a = arr[Math.floor(Math.random() * arr.length)];
            canvasStr += a + '';
            // console.log(canvasStr)
            value += a;
        }
        //生成验证码区域
        var myCanvas = document.getElementById('myCanvans');
        if(!myCanvas.getContext) return;
        var ctx = myCanvas.getContext('2d');
        var oImg = new Image();
        oImg.src = './square.jpg';
        oImg.onload = function(){
            var pattern = ctx.createPattern(oImg,'repeat');
            ctx.fillStyle = pattern;
            ctx.fillRect(0,0,myCanvas.clientWidth,myCanvas.height);
            ctx.textAlign = 'center';
            ctx.fillStyle = '#ccc';
            ctx.font = '50px Roboto Slab';
            ctx.setTransform(1,-0.12,0.3,1,0,12);
            ctx.fillText(canvasStr,myCanvas.width/2,60);
        }
    }
    createCanvas();
    $('#submitBtn').on('click',function(){
        showResult();
    })
    $('#refresh').on('click',function(){
        createCanvas();
    })
    function showResult(){
        var inputValue = $('.inputBox input').val();
        console.log(inputValue);
        if(value == inputValue){
            $('.inputBox span').css({
                background:'url("./true.png")',
                display:'inline-block'
            })
            // $('.inputBox img').css({
            //     background:'url("./error.png")',
            //     display:'none'
            // })
            createCanvas();
        }else{
            $('.error').css({
                display:'block'
            })
            $('.inputBox span').css({
                background:'url("./error.png")',
                display:'inline-block'
            })
            // $('.inputBox img').css({
            //     background:'url("./true.png")',
            //     display:'none'
            // })
            createCanvas();
        }
    }
})

效果图:
在这里插入图片描述
验证码输入正确:在这里插入图片描述
输入正确与错误验证码都会重新刷新

验证码输入错误
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值