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 相关文章推荐
关于document.cookie的使用javascript
Apr 11 Javascript
学习ExtJS Window常用方法
Oct 07 Javascript
jQuery实现div拖拽效果实例分析
Feb 20 Javascript
12个非常实用的JavaScript小技巧【推荐】
May 18 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
Jul 01 Javascript
bootstrap datetimepicker日期插件使用方法
Jan 13 Javascript
原生js实现日期计算器功能
Feb 17 Javascript
Angular2使用Guard和Resolve进行验证和权限控制
Apr 24 Javascript
vue-cli常用设置总结
Feb 24 Javascript
详解koa2学习中使用 async 、await、promise解决异步的问题
Nov 13 Javascript
微信小程序发送短信验证码完整实例
Jan 07 Javascript
vue-cli4.x创建企业级项目的方法步骤
Jun 18 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
一个php作的文本留言本的例子(三)
2006/10/09 PHP
PHP通过内置函数memory_get_usage()获取内存使用情况
2014/11/20 PHP
php7安装yar扩展的方法详解
2017/08/03 PHP
Laravel关系模型指定条件查询方法
2019/10/10 PHP
php中Swoole的热更新实现代码实例
2021/03/04 PHP
(转载)JavaScript中匿名函数,函数直接量和闭包
2007/05/08 Javascript
一个XML格式数据转换为图表的例子
2010/02/09 Javascript
javascript之学会吝啬 精简代码
2010/04/25 Javascript
JSF中confirm弹出框的用法示例介绍
2014/01/07 Javascript
jQuery on()方法示例及jquery on()方法的优点
2015/08/27 Javascript
JS定时检测任务任务完成后执行下一步的解决办法
2016/12/22 Javascript
使用jQuery 操作table 完成单元格合并的实例
2017/12/27 jQuery
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
2018/01/20 Javascript
JavaScript比较同一天的时间大小实例代码
2018/02/09 Javascript
JavaScript基础教程之如何实现一个简单的promise
2018/09/11 Javascript
在Vue环境下利用worker运行interval计时器的步骤
2019/08/01 Javascript
jQuery提示框插件SweetAlert用法分析
2019/08/05 jQuery
vue elementUI 表单校验的实现代码(多层嵌套)
2019/11/06 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
2020/01/14 Javascript
javascript浅层克隆、深度克隆对比及实例解析
2020/02/09 Javascript
javascript设计模式 ? 建造者模式原理与应用实例分析
2020/04/10 Javascript
Python进行数据科学工作的简单入门教程
2015/04/01 Python
在Python中利用Pandas库处理大数据的简单介绍
2015/04/07 Python
Python 实现微信防撤回功能
2019/04/29 Python
对python中GUI,Label和Button的实例详解
2019/06/27 Python
基于Python爬取爱奇艺资源过程解析
2020/03/02 Python
python实现人工蜂群算法
2020/09/18 Python
世界各地的旅游、观光和活动:Isango!
2019/10/29 全球购物
信息技术培训感言
2014/03/06 职场文书
毕业自我鉴定书
2014/03/24 职场文书
校园安全演讲稿
2014/05/09 职场文书
运动会广播稿诗歌版
2014/09/12 职场文书
2014年预备党员学习新党章思想汇报
2014/09/15 职场文书
村主任群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
刑事辩护授权委托书格式
2014/10/13 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书