原生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日

相关文章

  • 举例说明JavaScript中的实例对象与原型对象

    让我来详细讲解一下JavaScript中的实例对象与原型对象。 什么是实例对象? 在JavaScript中,每当我们使用构造函数创建一个新对象时,就会创建一个实例对象。实例对象是该构造函数的一个新实例,它将继承构造函数的所有属性和方法,并且可以根据需要添加新的属性和方法。 以下是创建一个实例对象的示例代码: // 构造函数 function Person(n…

    JavaScript 2023年5月27日
    00
  • javascript如何实现create方法

    当我们在 JavaScript 中使用面向对象编程时,有时需要创建一个对象模板,并基于该模板创建许多对象实例。JavaScript 的原型继承机制允许我们通过创建一个构造函数模板并向其原型对象添加方法和属性来实现这一目的。在这个过程中,我们可以使用 JavaScript 中的 create 方法,其允许我们基于一个现有对象创建一个新对象。 下面是使用 cre…

    JavaScript 2023年5月27日
    00
  • prettier自动格式化去换行的实现代码

    Prettier 自动格式化去换行的实现 Prettier 是一款代码格式化工具,能够自动为代码添加缩进、格式化代码样式等特性,并且运行速度较快,常用于开发中的自动化构建流程中。Prettier 在格式化代码时会默认去掉多余的换行,本文将详细介绍 Prettier 自动格式化去换行的实现。 安装 Prettier 使用 npm 命令安装 Prettier n…

    JavaScript 2023年6月11日
    00
  • JavaScript实现DOM对象选择器

    实现DOM对象选择器是JavaScript编程中最常用的功能之一。下面是详细讲解如何使用JavaScript实现DOM对象选择器的完整攻略: 1. 理解DOM对象选择器 在开发Web应用中,我们需要频繁地访问和操作网页元素。而每个网页元素都是一个DOM对象,可以通过JavaScript的DOM对象选择器来获取它们。DOM对象选择器可以根据元素的标签、类名、I…

    JavaScript 2023年6月10日
    00
  • layui-laydate时间日历控件使用方法详解

    以下是关于“layui-laydate时间日历控件使用方法详解”的完整攻略: layui-laydate时间日历控件使用方法详解 简介 layui-laydate是layui前端框架中的一种日期时间选择控件,它具有丰富的功能,例如选择日期时间范围、自定义格式、快速选择等,还支持各种主题风格样式。 安装 在使用layui-laydate之前,需要先引入layu…

    JavaScript 2023年6月10日
    00
  • js实现点击按钮弹出上传文件的窗口

    要实现点击按钮弹出上传文件的窗口,在前端开发中需要使用JavaScript。具体的实现方法有多种,可以通过原生JavaScript或使用一些现成的插件库来实现。本篇攻略将为大家介绍一种基于原生JavaScript的实现方式。 HTML部分(示例一) 首先,在HTML文件中需要创建一个按钮元素和一个file input元素,代码如下: <button i…

    JavaScript 2023年5月27日
    00
  • javascript常用正则表达式汇总

    Javascript常用正则表达式汇总 正则表达式是一种强大的工具,可以用来匹配、查找和替换文本中的模式。在JavaScript中,也可以通过正则表达式来完成字符串的相关操作。这里汇总了JavaScript中常用的正则表达式,希望能够帮助大家更好地处理字符串。 匹配数字 要匹配数字,可以使用\d来表示数字字符,加上一个可选的+或*表示匹配一次或者多次。下面是…

    JavaScript 2023年6月1日
    00
  • iframe子页面与父页面在同域或不同域下的js通信

    对于iframe子页面与父页面通信,需要注意同域或不同域等情况。 同域下的js通信 当子页面和父页面在同一个域名下时,js通信可以通过window.parent对象来进行。以下是一个简单的示例。 父页面代码: <!DOCTYPE html> <html> <head> <title>父页面</title&…

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