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 相关文章推荐
javascript String 对象
Apr 25 Javascript
基于JavaScript 下namespace 功能的简单分析
Jul 05 Javascript
判断文件是否正在被使用的JS代码
Dec 21 Javascript
js获取光标位置和设置文本框光标位置示例代码
Jan 09 Javascript
浅谈JavaScript中的作用域和闭包问题
Jul 07 Javascript
JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解
Aug 06 Javascript
jQuery复制节点用法示例(clone方法)
Sep 08 Javascript
微信小程序 按钮滑动的实现方法
Sep 27 Javascript
移动端滑动切换组件封装 vue-swiper-router实例详解
Nov 25 Javascript
了解JavaScript中let语句
May 30 Javascript
vue 子组件修改data或调用操作
Aug 07 Javascript
浅谈Vue使用Elementui修改默认的最快方法
Dec 05 Vue.js
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
再次研究下cache_lite
2007/02/14 PHP
注册页面之前先验证用户名是否存在的php代码
2012/07/14 PHP
php几个预定义变量$_SERVER用法小结
2014/11/07 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
2016/05/26 PHP
Yii中CGridView禁止列排序的设置方法
2016/07/12 PHP
PHP+ajax实现二级联动菜单功能示例
2018/08/10 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
2019/10/21 PHP
原始XMLHttpRequest方法详情回顾
2013/11/28 Javascript
js实现缓冲运动效果的方法
2015/04/10 Javascript
jQuery实现伸展与合拢panel的方法
2015/04/30 Javascript
Javascript闭包实例详解
2015/11/29 Javascript
javascript回到顶部特效
2016/07/30 Javascript
jQuery 特性操作详解及实例代码
2016/09/29 Javascript
详解jQuery插件开发方式
2016/11/22 Javascript
Vue.js实现在下拉列表区域外点击即可关闭下拉列表的功能(自定义下拉列表)
2017/05/30 Javascript
Js中将Long转换成日期格式的实现方法
2018/06/05 Javascript
vue安装和使用scss及sass与scss的区别详解
2018/10/15 Javascript
IE8中jQuery.load()加载页面不显示的原因
2018/11/15 jQuery
vue实现微信二次分享以及自定义分享的示例
2019/03/20 Javascript
微信小程序的授权实现过程解析
2019/08/02 Javascript
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
python实现3D地图可视化
2020/03/25 Python
使用Python构造hive insert语句说明
2020/06/06 Python
房产销售经理职责
2013/12/20 职场文书
学校运动会开幕演讲稿
2014/01/04 职场文书
骨干教师培训感言
2014/01/16 职场文书
公司授权委托书
2014/04/04 职场文书
家长给学校的建议书
2014/05/15 职场文书
主要负责人任命书
2014/06/06 职场文书
纺织工程专业推荐信
2014/09/08 职场文书
教师党的群众路线对照检查材料
2014/09/24 职场文书
乡镇干部个人对照检查材料(群众路线)
2014/09/26 职场文书
2014党的群众路线教育实践活动总结材料
2014/10/31 职场文书
夫妻双方自愿离婚协议书怎么写
2014/12/01 职场文书
CSS font-variation 可变字体的魅力(实例详解)
2022/03/03 HTML / CSS