CheckCode.js 前端验证码插件

article/2025/11/6 0:52:24

CheckCode.js 前端验证码插件

  • 效果截图
  • 插件使用方法
  • CheckCode.js
  • 本插件的参考示例

效果截图

在这里插入图片描述

插件使用方法

// 在html页面引入CheckCode.js
<script src="CheckCode.js"></script>
//定义
<script>let checkCode = new CheckCode({id:"code",      //容器的id值canvasId : "CheckCodeCanvas",    // canvas的idwidth:"100",        // canvas的宽度height:"30",       // canvas的高度type:"mix",			// 图形验证码默认类型mix:数字字母混合类型、number:纯数字、letter:纯字母});document.getElementById("button").onclick = function(){var res = checkCode .validate(document.getElementById("input").value);if(res){alert("验证正确");}else{alert("验证码错误");}}
</script>

CheckCode.js

/*** title -- 前端验证码插件一* author -- 三黄工作室* createTime -- 2020.12.28*/// 匿名函数 立即执行 避免冲突 提高性能
(function (window, document) {let N = 4; // 设置验证码长度function CheckCode(options){    //定义验证码类this.options = {id:"",      //容器的id值canvasId : "CheckCodeCanvas",    // canvas的idwidth:"100",        // canvas的default宽度height:"30",       // canvas的default高度type:"mix",         //图形验证码默认类型mix:数字字母混合类型、number:纯数字、letter:纯字母code:""}this.number = "1,2,3,4,5,6,7,8,9,0";this.letter = "q,w,e,r,t,y,u,i,o,p,a,s,d,f,g,h,j,k,l,z,x,c,v,b,n,m";// 初始化传入参数,判断参数类型,如果是object类型则依次赋值,否则赋给idthis.initOptions = () => {if(Object.prototype.toString.call(options) == "[object Object]")for(let i in options)this.options[i] = options[i];elsethis.options.id = options;}this.initOptions();this._init();this.create();this.style();}CheckCode.prototype = {title : "前端验证码插件一",author : "三黄工作室",createTime : "2020.12.28",styleJson:{font:[],x:[],y:[],deg:[],time:0},// 初始化验证码_init : function(){let con = document.getElementById(this.options.id);let canvas = document.createElement("canvas");this.options.width = con.offsetWidth > 0 ? con.offsetWidth : "100";this.options.height = con.offsetHeight > 0 ? con.offsetHeight : "30";canvas.id = this.options.canvasId;canvas.width = this.options.width;canvas.height = this.options.height;canvas.style.cursor = "pointer";canvas.innerHTML = "您的浏览器版本不支持canvas";con.appendChild(canvas);var parent = this;canvas.onclick = function(){parent.create();}},// 生成验证码create : function(){this.options.code = '';let txtArr='';switch(this.options.type){case 'mix': txtArr = (this.number+','+this.letter).split(",");break;case 'number': txtArr = this.number.split(",");break;case 'letter': txtArr = this.letter.split(",");break;}for(let i=1;i<=N;++i)this.options.code += txtArr[getRandomNum(0,txtArr.length-1)];},// 生成画布样式数据style : async function(){this.styleJson.time=0;this.styleJson.font=[];this.styleJson.x=[];this.styleJson.y=[];this.styleJson.deg=[];for(let i=1;i<=N;++i){this.styleJson.font.push(getRandomNum(this.options.height/2, this.options.height) + 'px SimHei');  // 字大小this.styleJson.x.push(this.options.width / (N+1) * i);this.styleJson.y.push(this.options.height /1.2);this.styleJson.deg.push(getRandomNum(-30, 30));}while(1){this.draw();await sleep(20);}},// 循环生成画布draw : function(){let canvas = document.getElementById(this.options.canvasId);let ctx = canvas.getContext('2d');ctx.clearRect(0, 0, this.options.width, this.options.height);   //  清除已有画布内容// 背景ctx.fillStyle = '#000';ctx.fillRect(0, 0, this.options.width, this.options.height);ctx.fillStyle = '#fff';ctx.fillRect(this.styleJson.time, 0, 20, this.options.height);if(this.styleJson.time>=this.options.width) this.styleJson.time=0;this.styleJson.time+=2;for(let i=0;i<N;++i){ctx.font = this.styleJson.font[i];ctx.fillStyle = '#000';ctx.shadowColor = "rgba(0, 0, 0, 0.4)";/**设置旋转角度和坐标原点**/ctx.translate(this.styleJson.x[i], this.styleJson.y[i]);ctx.rotate(this.styleJson.deg[i] * Math.PI / 180);ctx.fillText(this.options.code[i], 0, 0);/**恢复旋转角度和坐标原点**/ctx.rotate(-this.styleJson.deg[i] * Math.PI / 180);ctx.translate(-this.styleJson.x[i], -this.styleJson.y[i]);}},/**验证验证码**/validate: function(code){if(code == this.options.code){return true;}else{this.create();return false;}}}let getRandomColor = () => {return  '#' + (function(color){return (color +=  '0123456789abcdef'[Math.floor(Math.random()*16)])    && (color.length == 6) ?  color : arguments.callee(color);    })('');}/**生成一个随机数**/let getRandomNum = (min, max) =>{return Math.floor(Math.random() * (max - min) + min);}function sleep(ms){//时间延迟函数return new Promise(resolve =>setTimeout(resolve,ms))}// 导出CheckCode类window.CheckCode = CheckCode;})(window, document)

本插件的参考示例

如果需要本插件的示例,请扫描关注我的公众号,回复“前端验证码”即可。
在这里插入图片描述


http://chatgpt.dhexx.cn/article/ASMPxkh2.shtml

相关文章

JS 验证码生成及校验(详细注释)

这是个非常简单的(粗糙)模拟验证码生成及校验的小案例&#xff0c;只简单的实现下功能&#xff0c;后续希望可以做验证码背景是有颗粒的&#xff0c;同时有干扰线...更符合实际场景的验证码生成及校验。 完整代码如下&#xff1a; <!DOCTYPE html> <html lang"…

【JavaScript】手机验证码倒计时

手机验证码倒计时 样式 点击“发送手机验证码”开启倒计时&#xff1a; 开启倒计时后&#xff0c;再次点击不会发起再次请求&#xff1a; index.vue <p class"title"><span class"required">*</span><span>手机号验证&#…

纯js验证码

效果图&#xff1a; 源代码&#xff1a; <!DOCTYPE html> <html> <!-- head --> <head><title>js验证码</title><script type"text/javascript">/* 定义全局变量用以获取得到的验证码*/ var verification_code []; dra…

Javascript验证码的生成和验证,源代码

如果有幸被那位大神看见希望可以为我指出下面的问题&#xff0c; 我是一个前端白小白&#xff0c;刚开始学和记录自己感觉不错的小项目&#xff0c;各位大神有好的方法或者更好的写法可以指点一二&#xff0c;写不好的时候随便喷 我想看一下我潜力到底有多大。 <!DOCTYPE h…

JavaScript验证码

验证码在生活中很常见&#xff0c;所以做了个验证码案例&#xff1a; 感觉蛮简单的&#xff0c;就不解释了&#xff0c;代码里有注释&#xff0c;如下&#xff1a; var span document.getElementsByTagName(span)[0];var a document.getElementsByTagName(a)[0];var input …

JavaScript验证码示例

In this tutorial you will get JavaScript captcha example. 在本教程中&#xff0c;您将获得JavaScript验证码示例。 Captcha is used to determine whether or not the user that is filling and submitting a web form is human. While developing web projects we often …

js验证码插件

文章目录 1、gVerify插件1.1 源代码1.2 属性及方法1.3 使用 2、vue-puzzle-vcode插件2.1 安装2.2 参数与事件2.3 使用 3、vue2-verify3.1 安装3.2 参数3.3 使用 4、vue-monoplasty-slide-verify4.1 安装4.2 引入4.3 参数与事件4.4 使用 1、gVerify插件 &#xff08;常规验证码…

前端-js 验证码

html 代码 js 代码 // 存放随机的验证码 var showNum []; draw(showNum); // 封装一个把随机验证码放在画布上 function draw(showNum) { // 获取canvas var canvas document.querySelector("#cl"); console.log(canvas) var ctx canvas.getContext(&quo…

js案例---验证码

我们在进行注册与登录时&#xff0c;常常会有验证码的使用&#xff0c;今天我们来用js实现验证码的功能 我们先写网页的样式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>注册表</title>&l…

暑期学习日记27:js实现验证码生成与检验

今日学习了验证码的生成与检验&#xff0c;逻辑为&#xff1a; 1.加载页面时自动随机生成数字验证码。 2.点击看不清&#xff0c;更换验证码重新生成验证码。 3.点击确定按钮检验输入框内的值与验证码是否相等&#xff0c;不相等时弹出警告并清空输入框和刷新验证码。 代码…

js学习--验证码的实现

1.使用p标签创建存放验证码&#xff0c;并通过css设置p标签的样式。 <p>点击获取验证码</p>p {width: 120px;height: 50px;border: 1px solid;text-align: center;line-height: 50px;} 2.设置script标签&#xff0c;在标签内实现验证码功能。 2.1 获取元素标签。…

js简单验证码的生成和验证

如何用js生成简单验证码&#xff0c;并验证是否正确的方法 1、html页面如下 <div><table border"0" cellspacing"5" cellpadding"5" ><tr><td> <div id"checkCode" class"code" onclick"…

IDEA控制台字体大小设置

进入如下图所示设置&#xff0c;调整size

IDEA修改字体及大小

1.设置→编辑器→颜色和字体→Font&#xff0c;方案“Default”点击“另存为”&#xff0c;点击“确定”。 2.之后便可以修改字体样式及大小&#xff0c;点击“确定”。

Intellij IDEA 字体大小设置

场景 由于种种原因&#xff0c;对种种&#xff0c;字体看着或大或小&#xff0c;需要我们调整整一下下&#xff0c;这样写代码也会更加的舒爽一些。 设置方法 File——>Settings——>Editor——>Font

IDEA中修改字体大小无效的问题

在IDEA中我将字体从12改成22后&#xff0c;界面显示的字体没有变化&#xff0c;进一步了解发下。 我设置的字体大小和主题中的字体有冲突导致的&#xff0c;进入主题后&#xff0c;进行修改字体大小&#xff0c;问题解决。

IDEA--字体大小设置

IDEA版本&#xff1a; 2019.3.3 字体 一、界面字体 File -> Settings Appearance & Behavior -> Appearance 二、程序字体 Editor -> Colors & Fonts -> Font

调整idea面板字体大小

点开file控制器&#xff0c;找到settings&#xff0c;然后在搜索栏中搜索size&#xff0c;注意是要font类型的&#xff0c;然后就可以 调整字体号数&#xff0c;最后点击apply即可。

【WPS】表格设置单元格内容溢出隐藏

现在的单元格的内容过长导致内容溢出 选择目标单元格&#xff0c;右键弹出菜单&#xff0c;点击“设置单元格格式”&#xff0c;弹出单元格格式对话框 在对齐--文本对齐方式--水平对齐&#xff0c;选择填充&#xff0c;点击确定 这样内容就不会在右边的单元格显示了

Excel 单元格文字过长时被隐藏

1、可能是因为目标单元格后面一个单元格中有内容 解决&#xff1a;选中要回行的单元格点击开始→自动回行&#xff0c;或者双击要回行的单元格在要回行的文字后面使用快捷键&#xff1a;altenter 2、可能是因为Excel设置了自动适应列宽&#xff0c;&#xff08;我是误点了快捷键…