原生js实现验证码功能

实现验证码功能是网站注册、登录等操作中常见的一项安全措施。本文将介绍如何使用原生JS实现验证码功能,包括以下几个步骤:

  1. 生成随机验证码。
  2. 将随机验证码渲染到页面上。
  3. 监听用户输入的验证码,进行验证。
  4. 刷新验证码。

生成随机验证码

要实现验证码功能,首先需要生成一个随机的验证码字符串。可以使用Math.random()和String.fromCharCode()方法,结合循环语句来生成一个包含大小写字母和数字的随机字符串,例如:

function generateCode(){
  var code = '';
  for(var i=0; i<4; i++){
    var num = Math.floor(Math.random() * 62);
    if(num < 10){
      code += num; //数字
    }else if(num < 36){
      code += String.fromCharCode(num + 55); //大写字母
    }else{
      code += String.fromCharCode(num + 61); //小写字母 
    }
  }
  return code;
}

这段代码中使用了循环语句并结合Math.random()方法来生成一个0到61之间的随机整数,根据数字大小指定字符类型,从而生成随机字符串。其中数字对应0-9,大写字母对应A-Z,小写字母对应a-z。

将随机验证码渲染到页面上

有了随机验证码字符串之后,就需要将其渲染到页面上。可以使用innerHTML属性来修改HTML元素的内容,例如:

<!-- 验证码显示区域 -->
<div id="code"></div>
<!-- 刷新验证码按钮 -->
<button onclick="refreshCode()">刷新验证码</button>

<script>
window.onload = function(){
  var code = generateCode();
  document.getElementById('code').innerHTML = code;
}

function refreshCode(){
  var code = generateCode();
  document.getElementById('code').innerHTML = code;
}
</script>

这段代码中,首先使用window.onload事件,在网页加载完成后自动执行一次生成随机验证码的函数,并将生成的验证码字符串渲染到id为“code”的div元素中。然后为刷新验证码按钮绑定了一个refreshCode()函数,当用户点击按钮时,再次生成随机验证码,并将其渲染到对应的div元素中。

监听用户输入的验证码,进行验证

要实现验证码验证功能,可以为验证码输入框绑定一个onblur事件,当用户离开输入框时,自动进行验证。例如:

<!-- 验证码输入框 -->
<input type="text" id="input_code" onblur="checkCode()">

<script>
function checkCode(){
  var inputCode = document.getElementById('input_code').value;
  var code = document.getElementById('code').innerHTML;
  if(inputCode.toUpperCase() != code.toUpperCase()){
    alert('验证码不正确!');
  }
}
</script>

这段代码中,当用户离开输入框时,会自动执行checkCode()函数。该函数首先获取用户输入的验证码和生成的验证码字符串,使用toUpperCase()方法将它们转换为大写字母,再进行比较,如果不相等,则提示用户验证码不正确。

刷新验证码

最后是刷新验证码的功能,已经在第二个步骤中介绍了如何刷新验证码,这里再次提出。可以为刷新验证码按钮绑定一个onclick事件,点击按钮时重新生成新的验证码字符串,并渲染到页面上,例如:

<!-- 验证码显示区域 -->
<div id="code"></div>
<!-- 刷新验证码按钮 -->
<button onclick="refreshCode()">刷新验证码</button>

<script>
window.onload = function(){
  refreshCode();
}

function refreshCode(){
  var code = generateCode();
  document.getElementById('code').innerHTML = code;
  document.getElementById('input_code').value = '';
}
</script>

这段代码中,当用户点击刷新验证码按钮时,重新生成新的验证码字符串,并将它渲染到页面上,同时清空验证码输入框中的内容。

示例说明

下面提供两个示例说明:

示例1

<!-- 验证码显示区域 -->
<div id="code"></div>
<!-- 验证码输入框 -->
<input type="text" id="input_code" onblur="checkCode()">
<!-- 刷新验证码按钮 -->
<button onclick="refreshCode()">刷新验证码</button>

<script>
window.onload = function(){
  refreshCode();
}

function generateCode(){
  var code = '';
  for(var i=0; i<4; i++){
    var num = Math.floor(Math.random() * 62);
    if(num < 10){
      code += num; //数字
    }else if(num < 36){
      code += String.fromCharCode(num + 55); //大写字母
    }else{
      code += String.fromCharCode(num + 61); //小写字母 
    }
  }
  return code;
}

function refreshCode(){
  var code = generateCode();
  document.getElementById('code').innerHTML = code;
  document.getElementById('input_code').value = '';
}

function checkCode(){
  var inputCode = document.getElementById('input_code').value;
  var code = document.getElementById('code').innerHTML;
  if(inputCode.toUpperCase() != code.toUpperCase()){
    alert('验证码不正确!');
  }
}
</script>

这个示例演示了如何实现一个包含验证码显示区、验证码输入框以及刷新验证码按钮的完整验证码功能模块。

示例2

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>验证码示例</title>
</head>
<body>
  <div id="code">生成的验证码将显示在这里</div>
  <button onclick="refreshCode()">点击生成新的验证码</button>
  <button onclick="checkCode()">验证</button>
  <input type="text" id="input_code" placeholder="请输入验证码">
  <div id="result"></div>
  <script>
    function generateCode(){
      //生成验证码的代码省略
    }

    function refreshCode(){
      var code = generateCode();
      document.getElementById('code').innerHTML = code;
    }

    function checkCode(){
      var inputCode = document.getElementById('input_code').value;
      var code = document.getElementById('code').innerHTML;
      if(inputCode.toUpperCase() == code.toUpperCase()){
        document.getElementById('result').innerHTML = '验证通过!';
      }else{
        document.getElementById('result').innerHTML = '验证码不正确!';
      }
    }

    refreshCode();
  </script>
</body>
</html>

这个示例演示了如何将验证码功能嵌入到一个网页中,方便用户直接在该页面进行验证码验证。其中包含了生成验证码、刷新、验证码输入框和结果显示。

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

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

相关文章

  • JSON辅助格式化处理方法

    JSON格式是一种轻量级的数据交换格式,常用于前后端数据传输和存储。而格式杂乱、不易阅读的JSON数据对于开发和调试过程中处理和理解都会造成困难。因此,JSON辅助格式化处理方法就变得非常重要,本文将会详细讲解该方法的攻略。 什么是JSON格式化? JSON格式化是指通过对不可读的JSON数据按照一定的规则进行排版和缩进,使其更易于阅读和理解的过程。常规的J…

    JavaScript 2023年5月27日
    00
  • 一文让你彻底弄懂js中undefined和null的区别

    一文让你彻底弄懂js中undefined和null的区别 在 JavaScript 中,undefined 和 null 都代表着一种空值。但是它们是有区别的,接下来我们就以具体实例为例逐一讲解它们之间的差异。 undefined JavaScript 中,当一个变量被声明未赋值时,它的值就是 undefined。 let a; console.log(a)…

    JavaScript 2023年6月11日
    00
  • 一文带你搞懂JavaScript中转义字符的使用

    一文带你搞懂JavaScript中转义字符的使用 在JavaScript中,转义字符是指以反斜线 “\” 开头的字符,用于表示在字符串中无法直接输入的内容,比如双引号,单引号,换行符等。下面我们来详细讲解JavaScript中转义字符的使用。 转义字符的使用 使用转义字符时,需要将反斜线和需要转义的字符组合使用。下面是一些常见的转义字符及其含义: 转义字符 …

    JavaScript 2023年5月20日
    00
  • js调试系列 初识控制台

    JS调试系列——初识控制台 什么是控制台 控制台是浏览器提供的调试工具,可以用来查看JavaScript代码的运行情况,如代码执行顺序,变量的值等。控制台可以输出信息,查看调用堆栈,进行代码地图等操作。Chrome浏览器的控制台是最为强大的。 打开控制台 在Chrome浏览器中,可以通过快捷键 Ctrl + Shift + J 打开控制台。也可以右键页面空白…

    JavaScript 2023年5月27日
    00
  • JavaScript canvas实现文字时钟

    JavaScript的Canvas是一个非常强大的图像处理工具,它可以用来创建各种各样的特效,比如实现文字时钟。下面我将提供完整的实现攻略,希望能够对你有所帮助。 准备工作 在开始实现之前,需要准备以下工作: 在HTML中创建一个canvas标签,并指定合适的宽度和高度。 在JavaScript中获取该canvas标签,并获取其上下文。 设定需要显示的时间格…

    JavaScript 2023年5月27日
    00
  • JavaScript 函数表达式与函数声明的用法及区别

    JavaScript 中函数是一等公民,这意味着函数可以用作变量,参数或返回值来传递。我们可以使用两种方式声明和定义函数:函数声明和函数表达式。 函数声明 函数声明是使用 function 关键字定义函数的方式。函数声明提升(Hoisting),这意味着可以在函数声明之前调用函数。因为在 JavaScript 中,函数声明会被提升到作用域的顶部或当前的函数中…

    JavaScript 2023年5月27日
    00
  • SWFObject基本用法实例分析

    那么针对“SWFObject基本用法实例分析”的攻略,我会从以下几个方面着手进行详细讲解: SWFObject基本介绍 SWFObject的引入 SWFObject的基本用法 实例分析 结束语 接下来会一步步讲解,希望对您有所帮助。 1. SWFObject基本介绍 SWFObject是一个用于嵌入Flash对象的JavaScript库,使用SWFObjec…

    JavaScript 2023年6月11日
    00
  • JS正则表达式详解及身份证号码验证(简易版)

    JS正则表达式详解及身份证号码验证(简易版)是一篇详细讲解JavaScript的正则表达式和如何使用正则表达式去验证身份证号码的文章。本文主要分为以下几个部分: 正则表达式入门基础 本部分主要介绍正则表达式的基本概念和常用语法。 正则表达式是一组特殊字符和字符序列,组成规则是通过这些字符和序列来描述文本模式。比如,我们可以使用正则表达式来搜索特定模式的文本,…

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