layUI的验证码功能及校验实例


Posted in Javascript onOctober 25, 2019

用layUI的伙伴一定发现了:

layUI的验证码是长死图!!!

没错,是死图~~~~

什么倒霉框架。

下面代码是canvas验证码及校验。稍微修改及可用。

我嵌套到项目里的效果如图:

layUI的验证码功能及校验实例

<!DOCTYPE html>
<html>
<!-- head -->
<head>
 <meta charset="utf-8">
 <title>图片登录验证</title>
 <meta name="renderer" content="webkit">
 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
 
 <style>
  body{margin: 10px;}
  .demo-carousel{height: 200px; line-height: 200px; text-align: center;}
  .code {
    width: 400px;
    margin: 0 auto;
  }
  .input-val {
    width: 295px;
    background: #ffffff;
    height: 2.8rem;
    padding: 0 2%;
    border-radius: 5px;
    border: none;
    border: 1px solid rgba(0,0,0,.2);
    font-size: 1.0625rem;
  }
  #canvas {
    float: right;
    display: inline-block;
    border: 1px solid #ccc;
    border-radius: 5px;
    cursor: pointer;
  }
  .btn {
    width: 100px;
    height: 40px;
    background: #f1f1f1;
    border: 1px solid #ccc;
    border-radius: 5px;
    margin: 20px auto 0;
    display: block;
    font-size: 1.2rem;
    color: #e22e1c;
    cursor: pointer;
  }
  * {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
  }
 </style>
</head>
 
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
 
  <body cz-shortcut-listen="true" class="layui-layout-body">
    <div class="layui-layer-move">
    
    <div class="code">
      <input type="text" value="" placeholder="请输入验证码(不区分大小写)" class="input-val">
      <canvas id="canvas" width="100" height="43"></canvas>
      <button class="btn">提交</button>
    </div>
    
    </div>
  </body>
<script>
 
  $(function(){
    var show_num = [];
    draw(show_num);
 
    $("#canvas").on('click',function(){
      draw(show_num);
    })
    $(".btn").on('click',function(){
      var val = $(".input-val").val().toLowerCase();
      var num = show_num.join("");
      if(val==''){
        alert('请输入验证码!');
      }else if(val == num){
        alert('提交成功!');
        $(".input-val").val('');
        draw(show_num);
 
      }else{
        alert('验证码错误!请重新输入!');
        $(".input-val").val('');
        draw(show_num);
      }
    })
  })
 
  function draw(show_num) {
    var canvas_width=$('#canvas').width();
    var canvas_height=$('#canvas').height();
    var canvas = document.getElementById("canvas");//获取到canvas的对象,演员
    var context = canvas.getContext("2d");//获取到canvas画图的环境,演员表演的舞台
    canvas.width = canvas_width;
    canvas.height = canvas_height;
    var sCode = "A,B,C,E,F,G,H,J,K,L,M,N,P,Q,R,S,T,W,X,Y,Z,1,2,3,4,5,6,7,8,9,0";
    var aCode = sCode.split(",");
    var aLength = aCode.length;//获取到数组的长度
    
    for (var i = 0; i <= 3; i++) {
      var j = Math.floor(Math.random() * aLength);//获取到随机的索引值
      var deg = Math.random() * 30 * Math.PI / 180;//产生0~30之间的随机弧度
      var txt = aCode[j];//得到随机的一个内容
      show_num[i] = txt.toLowerCase();
      var x = 10 + i * 20;//文字在canvas上的x坐标
      var y = 20 + Math.random() * 8;//文字在canvas上的y坐标
      context.font = "bold 23px 微软雅黑";
 
      context.translate(x, y);
      context.rotate(deg);
 
      context.fillStyle = randomColor();
      context.fillText(txt, 0, 0);
 
      context.rotate(-deg);
      context.translate(-x, -y);
    }
    for (var i = 0; i <= 5; i++) { //验证码上显示线条
      context.strokeStyle = randomColor();
      context.beginPath();
      context.moveTo(Math.random() * canvas_width, Math.random() * canvas_height);
      context.lineTo(Math.random() * canvas_width, Math.random() * canvas_height);
      context.stroke();
    }
    for (var i = 0; i <= 30; i++) { //验证码上显示小点
      context.strokeStyle = randomColor();
      context.beginPath();
      var x = Math.random() * canvas_width;
      var y = Math.random() * canvas_height;
      context.moveTo(x, y);
      context.lineTo(x + 1, y + 1);
      context.stroke();
    }
  }
 
  function randomColor() {//得到随机的颜色值
    var r = Math.floor(Math.random() * 256);
    var g = Math.floor(Math.random() * 256);
    var b = Math.floor(Math.random() * 256);
    return "rgb(" + r + "," + g + "," + b + ")";
  }
</script>
</html>

以上这篇layUI的验证码功能及校验实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQueryUI的Dialog的简单封装
Jun 07 Javascript
js实现在文本框光标处添加字符的方法介绍
Nov 24 Javascript
jquery简单实现鼠标经过导航条改变背景图
Dec 17 Javascript
JavaScript常用小技巧小结
Dec 29 Javascript
js实现完全自定义可带多级目录的网页鼠标右键菜单方法
Feb 28 Javascript
jquery插件corner实现圆角边框的方法
Mar 09 Javascript
jQuery实现右下角可缩放大小的层完整实例
Jun 20 Javascript
Node.js中的http请求客户端示例(request client)
May 04 Javascript
Three.js利用Detector.js插件如何实现兼容性检测详解
Sep 26 Javascript
vuex中的 mapState,mapGetters,mapActions,mapMutations 的使用
Apr 13 Javascript
VUE搭建手机商城心得和遇到的坑
Feb 21 Javascript
JavaScript实现跟随鼠标移动的盒子
Jan 28 Javascript
layui点击按钮页面会自动刷新的解决方案
Oct 25 #Javascript
详解node登录接口之密码错误限制次数(含代码)
Oct 25 #Javascript
Vue 用Vant实现时间选择器的示例代码
Oct 25 #Javascript
vue登录以及权限验证相关的实现
Oct 25 #Javascript
vue-next/runtime-core 源码阅读指南详解
Oct 25 #Javascript
JS实现简单tab选项卡切换
Oct 25 #Javascript
vue项目从node8.x升级到12.x后的问题解决
Oct 25 #Javascript
You might like
vBulletin HACK----显示话题大小和打开新窗口于论坛索引页
2006/10/09 PHP
完美解决dedecms中的[html][/html]和[code][/code]问题
2007/03/20 PHP
ThinkPHP中redirect用法分析
2014/12/05 PHP
php实现基于openssl的加密解密方法
2016/09/30 PHP
PHP树形结构tree类用法示例
2019/02/01 PHP
laravel5.1框架model类查询的实现方法
2019/10/08 PHP
javascript 从if else 到 switch case 再到抽象
2010/07/17 Javascript
JavaScript实现表格排序方法
2013/06/14 Javascript
web css实现整站样式互相切换
2013/10/29 Javascript
JS验证邮箱格式是否正确的代码
2013/12/05 Javascript
window.location 对象所包含的属性
2014/10/10 Javascript
JavaScript+html5 canvas绘制的小人效果
2016/01/27 Javascript
基于JS实现无缝滚动思路及代码分享
2016/06/07 Javascript
javascript 中null和undefined区分和比较
2017/04/19 Javascript
最实用的JS数组函数整理
2017/12/05 Javascript
JavaScript深入V8引擎以及编写优化代码的5个技巧
2019/06/24 Javascript
Python工程师面试题 与Python Web相关
2016/01/14 Python
Python的Flask框架中集成CKeditor富文本编辑器的教程
2016/06/13 Python
Python自定义主从分布式架构实例分析
2016/09/19 Python
python 对多个csv文件分别进行处理的方法
2019/01/07 Python
在python中实现同行输入/接收多个数据的示例
2019/07/20 Python
大家都说好用的Python命令行库click的使用
2019/11/07 Python
节日快乐! Python画一棵圣诞树送给你
2019/12/24 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
python在CMD界面读取excel所有数据的示例
2020/09/28 Python
澳大利亚在线生活方式商店:Mytopia
2018/07/08 全球购物
世界上最大的在线汽车租赁预订平台:Rentalcars.com(支持中文)
2018/10/12 全球购物
Linux开机引导的步骤是什么
2014/02/26 面试题
系统管理员的职责包括那些?管理的对象是什么?
2013/01/18 面试题
公司周年庆活动方案
2014/08/25 职场文书
工程质检员岗位职责
2015/04/08 职场文书
指导老师鉴定意见
2015/06/05 职场文书
2016年感恩父亲节活动总结
2016/04/01 职场文书
干货:企业内部人才推荐奖励方案!
2019/07/09 职场文书
启迪人心的励志语录:脾气永远不要大于本事
2020/01/02 职场文书
js不常见操作运算符总结
2021/11/20 Javascript