JS 验证码功能的三种实现方式

下面为您讲解JS验证码功能的三种实现方式的完整攻略。

方式一:纯前端方法生成

实现过程

  1. 在HTML页面中添加验证码输入框和一个生成验证码的按钮;
  2. JS随机生成一个包含数字和字母的随机字符串并将其绑定到验证码文本框上;
  3. 当用户输入验证码并提交时,将输入的验证码与生成的验证码进行比较,判断验证码是否正确。

代码示例

HTML部分:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>JS验证码示例</title>
</head>
<body>
    <p>请输入验证码:</p>
    <input type="text" id="code-input" placeholder="验证码">
    <button onclick="createCode()">生成验证码</button>
    <button onclick="verifyCode()">提交</button>
</body>
</html>

JS部分:

var code; //存放生成的验证码
function createCode() {
    //随机生成一个包含数字和字母的随机字符串
    code = '';
    var codeLength = 4; //验证码长度
    var selectChar = new Array(0,1,2,3,4,5,6,7,8,9,
                                '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');
    for (var i = 0; i < codeLength; i++) {
        var index = Math.floor(Math.random() * 62); //取得随机数的索引(0~35)
        code += selectChar[index]; //根据索引取得随机数加到code上
    }
    document.getElementById('code-input').value = code; //把code值赋给验证码文本框
}
function verifyCode() {
    //获取用户输入的验证码并与生成的验证码进行比较
    var inputCode = document.getElementById('code-input').value;
    if(inputCode.length <= 0) {
        alert('请输入验证码!');
    } else if(inputCode.toUpperCase() != code.toUpperCase()) {
        alert("验证码输入有误!");
        createCode();//刷新验证码
    }else {
        alert('验证码正确!');
    }
}

方式二:结合后端API生成

实现过程

  1. 后端提供生成验证码的API;
  2. 在HTML页面中添加验证码输入框和一个生成验证码的按钮;
  3. 当用户点击生成验证码的按钮时,调用后端API生成验证码并返回到页面上进行展示;
  4. 当用户输入验证码并提交时,将输入的验证码传递给后端API进行比较,判断验证码是否正确。

代码示例

HTML部分和方式一相同。

JS部分:

function createCode() {
    //调用后端API生成验证码并返回到页面上
    var img = document.createElement("img");
    img.src = "http://www.example.com/getCode"; //调用后端API
    document.getElementById("code-input").parentNode.insertBefore(img, document.getElementById("code-input"));
}
function verifyCode() {
    //获取用户输入的验证码并传递给后端API进行比较
    var inputCode = document.getElementById('code-input').value;
    var xhr = new XMLHttpRequest();
    xhr.open("GET", "http://www.example.com/checkCode?code=" + inputCode, true); //调用后端API
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4 && xhr.status == 200) {
            if(xhr.responseText == "true") {
                alert("验证码正确!");
            } else {
                alert("验证码输入有误!");
                createCode();//刷新验证码
            }
        }
    }
    xhr.send();
}

方式三:HTML5的canvas绘图技术生成

实现过程

  1. 在HTML页面中添加一个canvas标签和一个生成验证码的按钮;
  2. JS使用HTML5的canvas绘图技术随机生成一个包含数字和字母的随机字符串并在canvas中进行绘制;
  3. 当用户输入验证码并提交时,将输入的验证码与生成的验证码进行比较,判断验证码是否正确。

代码示例

HTML部分:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>HTML5Canvas验证码示例</title>
</head>
<body>
    <p>请输入验证码:</p>
    <input type="text" id="code-input">
    <br>
    <canvas id="code-canvas" width="120" height="30"></canvas>
    <button onclick="createCode()">生成验证码</button>
    <button onclick="verifyCode()">提交</button>
</body>
</html>

JS部分:

var code; //存放生成的验证码
var canvas = document.getElementById('code-canvas'); //获取canvas元素
var ctx = canvas.getContext('2d'); //获取画布上下文
ctx.font = 'bold 24px Arial'; //设置字体

function createCode() {
    //随机生成一个包含数字和字母的随机字符串
    code = '';
    var codeLength = 4; //验证码长度
    var selectChar = new Array(0,1,2,3,4,5,6,7,8,9,
                                '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');
    for (var i = 0; i < codeLength; i++) {
        var index = Math.floor(Math.random() * 62); //取得随机数的索引(0~35)
        code += selectChar[index]; //根据索引取得随机数加到code上
    }
    //在canvas中绘制验证码
    ctx.clearRect(0,0,canvas.width,canvas.height); //清除画布
    ctx.strokeText(code,canvas.width/2-30,canvas.height/2+10);
}
function verifyCode() {
    //获取用户输入的验证码并与生成的验证码进行比较
    var inputCode = document.getElementById('code-input').value;
    if(inputCode.length <= 0) {
        alert('请输入验证码!');
    } else if(inputCode.toUpperCase() != code.toUpperCase()) {
        alert("验证码输入有误!");
        createCode();//刷新验证码
    }else {
        alert('验证码正确!');
    }
}

createCode(); //初始自动生成验证码

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS 验证码功能的三种实现方式 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • spring boot ajax跨域的两种方式

    当使用Spring Boot框架开发Web应用程序时,可以使用Ajax来进行异步请求和响应。但是在跨域请求时,会涉及到浏览器的一些限制,比如同源政策。本文内容将详细介绍使用Spring Boot如何解决Ajax跨域问题。 1. 什么是Ajax跨域问题 Ajax跨域问题指的是浏览器所遵循的同源策略,导致无法利用Ajax去向不同源的服务器发送请求。跨域请求会被浏…

    JavaScript 2023年6月11日
    00
  • Treeview动态添加用户控件传值和取值的实例代码

    接下来我会为您详细讲解“Treeview动态添加用户控件传值和取值的实例代码”的完整攻略。 问题背景 在.NET Forms应用中,有时需要在TreeView中动态添加用户控件,并传递值。而在取值时,需要将用户控件的值根据TreeView结构进行解析,因此需要一定的编程经验和技巧。 实现思路 我们可以在TreeView的节点上存储自定义对象,并将自定义对象包…

    JavaScript 2023年6月11日
    00
  • Javascript 判断函数类型完美解决方案

    下面我将为你详细讲解“Javascript 判断函数类型完美解决方案”的完整攻略。 1. 判断函数类型的问题 在Javascript中,判断某个值的类型是一件很常见的事情。通常我们可以使用typeof操作符来对一个值的类型进行判断。但是当对于函数类型时,使用typeof只能得到返回值为function,无法区别不同类型的函数。 我们知道在Javascript…

    JavaScript 2023年5月27日
    00
  • 深入理解JavaScript单体内置对象

    深入理解JavaScript单体内置对象 JavaScript 的单体内置对象是指在全局作用域中提供的那些对象,例如 String、Array、Object、Math、Date 等等。掌握这些内置对象的特点和方法,可以帮助我们更有效地编写 JavaScript 代码。下面就是深入理解 JavaScript 单体内置对象的攻略。 了解每个内置对象的定义和用途 …

    JavaScript 2023年5月27日
    00
  • JavaScript 判断浏览器类型及版本

    JavaScript 判断浏览器类型及版本是前端开发中的一个常见需求,下面为大家介绍一下如何进行判断。 获取userAgent字符串 在判断浏览器类型和版本之前,我们需要先获取浏览器的userAgent字符串。这可以通过JavaScript里的navigator对象来实现: var ua = navigator.userAgent.toLowerCase()…

    JavaScript 2023年6月11日
    00
  • ASP.Net MVC+Data Table实现分页+排序功能的方法

    一、简介 在ASP.Net MVC网站开发过程中,常常需要实现分页、排序等功能来展示数据。Data Table是一个功能强大、易于使用的表格插件,可以很好地实现这些功能。本文将详细介绍如何在ASP.Net MVC中使用Data Table实现分页、排序功能的方法。 二、实现步骤 安装Data Table插件。可以从官网下载最新版本,也可以通过NuGet安装。…

    JavaScript 2023年6月11日
    00
  • javascript截取字符串(通过substring实现并支持中英文混合)

    下面是完整的攻略: Javascript截取字符串(通过substring实现并支持中英文混合) 在 Javascript 中,可以通过 substring 方法来截取字符串。该方法可以接受两个参数,第一个参数是截取的起始位置,第二个参数是截取的终止位置(不包含该位置的字符)。具体的语法如下: string.substring(start, end) 下面是…

    JavaScript 2023年5月28日
    00
  • Javascript中arguments对象的详解与使用方法

    Javascript中arguments对象的详解与使用方法 什么是arguments对象 arguments是一个函数的内置对象,它表示函数在调用时传入的所有参数,即使函数在定义时没有声明任何参数也可以使用。该对象会在每次函数调用时自动创建。 举个例子: function foo() { console.log(arguments); } foo(1, ‘…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部