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 Xml增删改查(IE下)操作实现代码
Jan 30 Javascript
JS基于MSClass和setInterval实现ajax定时采集信息并滚动显示的方法
Apr 18 Javascript
AngularJS使用ng-app自动加载bootstrap框架问题分析
Jan 04 Javascript
js实现延迟加载的几种方法
Apr 24 Javascript
web前端vue之vuex单独一文件使用方式实例详解
Jan 11 Javascript
微信小程序自定义prompt组件步骤详解
Jun 12 Javascript
浅谈ng-zorro使用心得
Dec 03 Javascript
Vue中实现权限控制的方法示例
Jun 07 Javascript
vue组件 keep-alive 和 transition 使用详解
Oct 11 Javascript
Element Card 卡片的具体使用
Jul 26 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
Jul 30 Javascript
如何用vue实现网页截图你知道吗
Nov 17 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 禁止页面缓存输出
2009/01/07 PHP
微信随机生成红包金额算法php版
2016/07/21 PHP
qTip 基于JQuery的Tooltip插件[兼容性好]
2010/09/01 Javascript
JavaScript入门之基本函数详解
2011/10/21 Javascript
JQuery的自定义事件代码,触发,绑定简单实例
2013/08/01 Javascript
JS数组的遍历方式for循环与for...in
2014/07/31 Javascript
js获取域名的方法
2015/01/27 Javascript
js实现的牛顿摆效果
2015/03/31 Javascript
javascript控制台详解
2015/06/25 Javascript
drag-and-drop实现图片浏览器预览
2015/08/06 Javascript
学JavaScript七大注意事项【必看】
2016/05/04 Javascript
在JavaScript中模拟类(class)及类的继承关系
2016/05/20 Javascript
javascript实现抽奖程序的简单实例
2016/06/07 Javascript
JavaScript的事件机制详解
2017/01/17 Javascript
js仿QQ邮箱收件人选择与搜索功能
2017/02/10 Javascript
JavaScript如何获取到导航条中HTTP信息
2017/10/10 Javascript
react-native 圆弧拖动进度条实现的示例代码
2018/04/12 Javascript
jQuery轮播图实例详解
2018/08/15 jQuery
基于iview的router常用控制方式
2019/05/30 Javascript
通过实例学习React中事件节流防抖
2019/06/17 Javascript
layui 实现table翻页滚动条位置保持不变的例子
2019/09/05 Javascript
jquery将json转为数据字典的实例代码
2019/10/11 jQuery
从表单校验看JavaScript策略模式的使用详解
2020/10/17 Javascript
python下读取公私钥做加解密实例详解
2017/03/29 Python
python数据封装json格式数据
2018/03/04 Python
Pandas实现数据类型转换的一些小技巧汇总
2018/05/07 Python
Python拼接字符串的7种方法总结
2018/11/01 Python
window7下的python2.7版本和python3.5版本的opencv-python安装过程
2019/10/24 Python
python图的深度优先和广度优先算法实例分析
2019/10/26 Python
python向图片里添加文字
2019/11/26 Python
python3.8下载及安装步骤详解
2020/01/15 Python
Python 开发工具PyCharm安装教程图文详解(新手必看)
2020/02/28 Python
Diesel美国网上商店:意大利牛仔时装品牌
2020/12/10 全球购物
一份软件工程师的面试试题
2016/02/01 面试题
企业宣传语大全
2015/07/13 职场文书
2019暑假阅读倡议书
2019/06/24 职场文书