基于JS实现一个随机生成验证码功能


Posted in Javascript onMay 29, 2019

效果展示

基于JS实现一个随机生成验证码功能

实现原理

1. html:一般就是一个div: <div id="code"></div> ,样式根据需求设计。

2. JS:1)将所有的验证码所用的字符放在一个字符串中

 

  2)在这个字符串的字符个数以内,随机生成索引号

  3)根据索引号查找对应字符,拼接成验证码的字符串

代码实现

HTML:

<div id="code"></div>

CSS:

* {
  margin: 0;
  padding: 0;
}
div {
  width: 80px;
  height: 30px;
  font-size: 18px;
  line-height: 30px;
  text-align: center;
  color: #333;
  border: 1px solid red;
  margin: 100px auto;
  cursor: pointer;
}

JavaScript:

var codeStr = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
var oDiv = document.getElementById('code');
// 用来生成随机整数
function getRandom(n, m) { // param: (Number, Number)
  n = Number(n);
  m = Number(m);
  // 确保 m 始终大于 n
  if (n > m) {
    var temp = n;
    n = m;
    m = temp;
  }
  // 下有详细说明
  return Math.floor(Math.random()*(m - n) + n);
}
// 将随机生成的整数下标对应的字母放入div中
function getCode() {
  var str = '';
  // 验证码有几位就循环几次
  for (var i = 0;i < 4;i ++) {
    var ran = getRandom(0, 62);
    str += codeStr.charAt(ran);
  }
  oDiv.innerHTML = str;
}
getCode();// 调用函数,页面刷新也会刷新验证码
// 点击刷新验证码
oDiv.onclick = function(){
  getCode();
}

代码分析

JS:

1)将所有的验证码所用的字符放在一个字符串中

             -- > 代码第1行,除了字母数字也可放入中文汉字等。

 

        2)在这个字符串的字符个数以内,随机生成索引号

             -- > 第4行的函数用于生成随机整数,参数 (n, m)为数字,Number()确保是数字

        默认m > n,防止传参有误,用if判断后改正

        Math.random() -- > [0,1)

        Math.random() * (m - n) -- > [0, m - n)

        Math.random() * (m - n) + n -- > [n, m)

        为了能将codeStr所有的下标都取到,上述m若是codeStr.length,想要取值能取到最后一位,再使用Math.floor()向下取整。

        n 为 0,m 为 codeStr.length 则随机范围为codeStr的所有元素下标。例(n, m) -- > (0, 62)计算后的取值范围:下标为[0, 61]的整数。

        3)根据下标查找对应元素,拼接成验证码的字符串

        第17行的函数getCode()获取字符串中对应元素,并拼接成字符串返回到页面中。最后点击div可不断生成随机验证码。

完整代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>随机生成验证码</title>
  <style>
  * {
    margin: 0;
    padding: 0;
  }
  div {
    width: 80px;
    height: 30px;
    font-size: 18px;
    line-height: 30px;
    text-align: center;
    color: #333;
    border: 1px solid red;
    margin: 100px auto;
    cursor: pointer;
  }
  </style>
</head>

<body>
  <div id="code"></div>

  <script>
  var codeStr = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
  var oDiv = document.getElementById('code');
  // 用来生成随机整数
  function getRandom(n, m) { // param: (Number, Number)
    n = Number(n);
    m = Number(m);
    // 确保 m 始终大于 n
    if (n > m) {
      var temp = n;
      n = m;
      m = temp;
    }
    return Math.floor(Math.random()*(m - n) + n);
  }
  // 将随机生成的整数下标对应的字母放入div中
  function getCode() {
    var str = '';
    // 验证码有几位就循环几次
    for (var i = 0;i < 4;i ++) {
      var ran = getRandom(0, 62);
      str += codeStr.charAt(ran);
    }
    oDiv.innerHTML = str;
  }
  getCode();// 调用函数,页面刷新也会刷新验证码
  // 点击刷新验证码
  oDiv.onclick = function(){
    getCode();
  }
  </script>
</body>
</html>

总结

以上所述是小编给大家介绍的基于JS实现一个随机生成验证码功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
用 Javascript 验证表单(form)中多选框(checkbox)值
Sep 08 Javascript
锋利的jQuery jQuery中的DOM操作
Mar 21 Javascript
用jQuery获取IE9下拉框默认值问题探讨
Jul 22 Javascript
JavaScript显示当前文档最后修改日期的方法
Mar 19 Javascript
JavaScript返回0-1之间随机数的方法
Apr 06 Javascript
CSS中position属性之fixed实现div居中
Dec 14 Javascript
jQuery自定义组件(导入组件)
Nov 08 Javascript
js实现选项卡内容切换以及折叠和展开效果【推荐】
Jan 08 Javascript
微信小程序 radio单选框组件详解及实例代码
Jan 10 Javascript
在vue中获取dom元素内容的方法
Jul 10 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
Jan 27 Javascript
利用JavaScript的Map提升性能的方法详解
Aug 14 Javascript
微信小程序mpvue点击按钮获取button值的方法
May 29 #Javascript
深入了解响应式React Native Echarts组件
May 29 #Javascript
node将geojson转shp返回给前端的实现方法
May 29 #Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
May 29 #Javascript
关于element-ui的隐藏组件el-scrollbar的使用
May 29 #Javascript
JS学习笔记之数组去重实现方法小结
May 29 #Javascript
基于Vue实现电商SKU组合算法问题
May 29 #Javascript
You might like
用Socket发送电子邮件
2006/10/09 PHP
PHP小程序自动提交到自助友情连接
2009/11/24 PHP
PHP中对用户身份认证实现两种方法
2011/06/04 PHP
php错误级别的设置方法
2013/06/17 PHP
php动态函数调用方法
2015/05/21 PHP
jQuery UI Dialog控件中的表单无法正常提交的解决方法
2010/12/19 Javascript
jQuery修改class属性和CSS样式整理
2015/01/30 Javascript
javascript实现的图片切割多块效果实例
2015/05/07 Javascript
JS实现获取键盘按下的按键并显示在页面上的方法
2015/11/04 Javascript
老生常谈JavaScript 函数表达式
2016/09/01 Javascript
概述jQuery的元素筛选
2016/11/23 Javascript
使用snowfall.jquery.js实现爱心满屏飞的效果
2017/01/05 Javascript
Angular 4依赖注入学习教程之简介(一)
2017/06/04 Javascript
vue中的面包屑导航组件实例代码
2019/07/01 Javascript
Vue 3.x+axios跨域方案的踩坑指南
2019/07/04 Javascript
python使用urllib模块开发的多线程豆瓣小站mp3下载器
2014/01/16 Python
python实现忽略大小写对字符串列表排序的方法
2014/09/25 Python
请不要重复犯我在学习Python和Linux系统上的错误
2016/12/12 Python
Python实现删除文件中含“指定内容”的行示例
2017/06/09 Python
Python基于matplotlib实现绘制三维图形功能示例
2018/01/18 Python
Python subprocess模块功能与常见用法实例详解
2018/06/28 Python
python实现LBP方法提取图像纹理特征实现分类的步骤
2019/07/11 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
2020/06/18 Python
详解Python流程控制语句
2020/10/28 Python
Move Free官方海外旗舰店:美国骨关节健康专业品牌
2017/12/06 全球购物
日本订房网站,预订日本星级酒店/温泉旅馆:Relux(支持中文)
2020/01/03 全球购物
商得四方公司面试题(gid+)
2014/04/30 面试题
教育实习生的自我评价分享
2013/11/21 职场文书
元旦寄语大全
2014/04/10 职场文书
作文评语集锦大全
2014/04/23 职场文书
2014年销售员工作总结
2014/12/01 职场文书
2015年党员个人自我评价
2015/03/03 职场文书
幼儿园小班开学寄语
2015/05/27 职场文书
基层党建工作简报
2015/07/21 职场文书
ORACLE查看当前账号的相关信息
2021/06/18 Oracle
linux目录管理方法介绍
2022/06/01 Servers