基于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 相关文章推荐
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
Jun 10 Javascript
关于IE浏览器以及Firefox下的javascript冒泡事件的响应层级
Oct 14 Javascript
JS实现带有3D立体感的银灰色竖排折叠菜单代码
Oct 20 Javascript
VUEJS实战之修复错误并且美化时间(2)
Jun 13 Javascript
基于jQuery实现页面搜索功能
Mar 26 Javascript
AngularJS中$injector、$rootScope和$scope的概念和关联关系深入分析
Jan 19 Javascript
jQuery获取Table某列的值(推荐)
Mar 03 Javascript
JS实现浏览上传文件的代码
Aug 23 Javascript
angular 表单验证器验证的同时限制输入的实现
Apr 11 Javascript
解决LayUI加上form.render()下拉框和单选以及复选框不出来的问题
Sep 27 Javascript
vue实现顶部菜单栏
Nov 08 Javascript
关于angular 8.1使用过程中的一些记录
Nov 25 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
PHP连接局域网MYSQL数据库的简单实例
2013/08/26 PHP
PHP生成不重复标识符的方法
2014/11/21 PHP
PHP中预定义的6种接口介绍
2015/05/12 PHP
修改Laravel5.3中的路由文件与路径
2016/08/10 PHP
实例讲解PHP表单
2020/06/10 PHP
javascript 图片上传预览-兼容标准
2009/06/01 Javascript
JS模板实现方法
2013/04/03 Javascript
使用js在页面中绘制表格核心代码
2013/09/16 Javascript
js获取事件源及触发该事件的对象
2013/10/24 Javascript
Javascript delete 引用类型对象
2013/11/01 Javascript
AngularJS轻松实现双击排序的功能
2016/08/30 Javascript
JS写谷歌浏览器chrome的外挂实例
2018/01/11 Javascript
vue弹窗组件的实现示例代码
2018/09/10 Javascript
vue中英文切换实例代码
2020/01/21 Javascript
vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)
2020/06/11 Javascript
python实现多线程采集的2个代码例子
2014/07/07 Python
编写简单的Python程序来判断文本的语种
2015/04/07 Python
Python+Socket实现基于UDP协议的局域网广播功能示例
2017/08/31 Python
python实现批量按比例缩放图片效果
2018/03/30 Python
解决python3 urllib 链接中有中文的问题
2018/07/16 Python
Python实现定时执行任务的三种方式简单示例
2019/03/30 Python
python对常见数据类型的遍历解析
2019/08/27 Python
python自动分箱,计算woe,iv的实例代码
2019/11/22 Python
浅谈python print(xx, flush = True) 全网最清晰的解释
2020/02/21 Python
pycharm 关掉syntax检查操作
2020/06/09 Python
Django实现随机图形验证码的示例
2020/10/15 Python
如何清空Session
2015/02/23 面试题
读书活动总结
2014/04/28 职场文书
优秀电子工程系毕业生求职信
2014/05/24 职场文书
团组织推优材料
2014/12/29 职场文书
叶问观后感
2015/06/15 职场文书
师范生见习自我总结
2015/06/23 职场文书
业务员管理制度范本
2015/08/06 职场文书
防震减灾主题班会
2015/08/14 职场文书
JPA如何使用entityManager执行SQL并指定返回类型
2021/06/15 Java/Android
解决Springboot PostMapping无法获取数据的问题
2022/05/06 Java/Android