电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

js實現驗證碼功能

瀏覽:95日期:2024-04-28 18:46:38

本文實例為大家分享了js實現驗證碼功能的具體代碼,供大家參考,具體內容如下

#前面是拆解著講的,不想看可以直接跳過,帶注釋的完整版代碼和效果在后面

首先在頁面中準備一個輸入框,一個顯示驗證碼的盒子和一個提交按鈕

<body> <input type='text'> <div></div> <button>提交</button></body>

然后加一些樣式

input { width: 150px; height: 30px; outline: none; font-size: 24px; vertical-align: middle;}button { outline: none; vertical-align: middle; cursor: pointer;}div { display: inline-block; width: 90px; height: 40px; line-height: 40px; text-align: center; vertical-align: middle; background-color: #ddd; cursor: pointer;}

然后大概長這樣(有點丑,不過無所謂,主要內容是js)

js實現驗證碼功能

好,那么開始寫js

首先獲取這些元素

var input = document.querySelector(’input’);var btn = document.querySelector(’button’);var div = document.querySelector(’div’);

然后搞一個字符庫和一個保存驗證碼的字符串

var characters = 'QWETYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890';var str;

那個字符庫就直接滾鍵盤就行了~

因為驗證碼要多次用到隨機數,所以為了方便就先搞一個隨機數的函數

function getRandom(l, r) { return parseInt(l + Math.random() * (r - l + 1));}

因為是驗證碼,所以不能讓生成的文本可以直接被選中復制,所以給加一個文本不可選中

div.addEventListener(’selectstart’, function (e) { e.preventDefault();})

因為驗證碼不是每次刷新頁面就生成一次,看不清是可以換的,要多次生成,所以就把生成驗證碼的部分寫在一個函數里

function run() { str = ’’; while (div.hasChildNodes()) { div.removeChild(div.firstChild); } for (var i = 0; i < 4; i++) { var span = document.createElement(’span’); span.innerHTML = characters[getRandom(0, characters.length - 1)]; span.style.display = ’inline-block’; span.style.fontSize = getRandom(16, 32) + ’px’; span.style.color = ’rgb(’ + getRandom(0, 200) + ’,’ + getRandom(0, 200) + ’,’ + getRandom(0, 200) + ’)’; span.style.transform = ’translate(’ + getRandom(-5, 5) + ’px, ’ + getRandom(-5, 5) + ’px) rotate(’ + getRandom(-20, 20) + ’deg)’; str += span.innerHTML; div.appendChild(span); }}

大概說明一下這部分,原理大概就是創建4(我搞的是4位的驗證碼)個span,然后分別隨機設置文本、字體大小、字體顏色、平移旋轉啥的,然后把span添加到div里成為div的子節點,然后不要忘了讓str變量儲存一下驗證碼的字符

每次生成之前先將上一次生成的驗證碼刪掉(即把div里的所有子節點刪除掉),并且把str重置

然后頁面刷新的時候生成一次(調用一次),每次點擊div的時候重新生成一次(每次點擊調用一次)

run();div.addEventListener(’click’, run);

再給提交按鈕添加點擊事件:判斷驗證輸入的驗證碼對不對,然后刷新驗證碼,并且自動將輸入框中的文本清除

btn.addEventListener(’click’, function () { if (input.value.toLowerCase() == str.toLowerCase()) { alert(’驗證成功’); } else { alert(’驗證失敗’); } run(); input.value = ’’;})

判斷驗證碼這里我為了不區分大小寫用了toLowerCase()函數將兩個字符串都轉化成小寫之后再做的比較

至此,功能就都實現的差不多了

看效果:

js實現驗證碼功能

帶注釋的完整版代碼如下:

<!DOCTYPE html><html lang='ch-ZN'><head> <meta charset='UTF-8'> <meta name='viewport' content='width=device-width, initial-scale=1.0'> <title>js實現驗證碼</title> <style> input { width: 150px; height: 30px; outline: none; font-size: 24px; vertical-align: middle; } button { outline: none; vertical-align: middle; cursor: pointer; } div { display: inline-block; width: 90px; height: 40px; line-height: 40px; text-align: center; vertical-align: middle; background-color: #ddd; cursor: pointer; } </style></head><body> <input type='text'> <div></div> <button>提交</button> <script> // 獲取元素 var input = document.querySelector(’input’); var btn = document.querySelector(’button’); var div = document.querySelector(’div’); // 搞一個字符庫 var characters = 'QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890'; var str; // str用來儲存驗證碼的文本 // 生成一個在[l,r]范圍內的隨機整數的函數 function getRandom(l, r) { return parseInt(l + Math.random() * (r - l + 1)); } // 設置文本不可選中 div.addEventListener(’selectstart’, function (e) { e.preventDefault(); }) // 生成驗證碼的函數 function run() { // 先重置str str = ’’; // 刪除掉div中的所有子節點 while (div.hasChildNodes()) { div.removeChild(div.firstChild); } // 生成由四個字符組成的驗證碼 for (var i = 0; i < 4; i++) { // 創建一個span對象 var span = document.createElement(’span’); // 設置文本(從字庫中隨機抽取一個字符) span.innerHTML = characters[getRandom(0, characters.length - 1)]; // 設置一些隨機的樣式 span.style.display = ’inline-block’; span.style.fontSize = getRandom(16, 32) + ’px’; span.style.color = ’rgb(’ + getRandom(0, 200) + ’,’ + getRandom(0, 200) + ’,’ + getRandom(0, 200) + ’)’; span.style.transform = ’translate(’ + getRandom(-5, 5) + ’px, ’ + getRandom(-5, 5) + ’px) rotate(’ + getRandom(-20, 20) + ’deg)’; str += span.innerHTML; // str記錄字符 div.appendChild(span); // 將span添加到div中 } } run(); // 每次打開/刷新頁面時先調用一次 div.addEventListener(’click’, run); // 每次點擊驗證碼的時候調用一次 // 提交按鈕點擊事件 btn.addEventListener(’click’, function () { if (input.value.toLowerCase() == str.toLowerCase()) { alert(’驗證成功’); } else { alert(’驗證失敗’); } run(); input.value = ’’; }) </script></body></html>

以上

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 老房子翻新装修,旧房墙面翻新,房屋防水补漏,厨房卫生间改造,室内装潢装修公司 - 一修房屋快修官网 | 拉力机-万能试验机-材料拉伸试验机-电子拉力机-拉力试验机厂家-冲击试验机-苏州皖仪实验仪器有限公司 | 药品仓库用除湿机-变电站用防爆空调-油漆房用防爆空调-杭州特奥环保科技有限公司 | 运动木地板_体育木地板_篮球馆木地板_舞台木地板-实木运动地板厂家 | 离子色谱自动进样器-青岛艾力析实验科技有限公司 | 地图标注-手机导航电子地图如何标注-房地产商场地图标记【DiTuBiaoZhu.net】 | 环氧乙烷灭菌器_压力蒸汽灭菌器_低温等离子过氧化氢灭菌器 _低温蒸汽甲醛灭菌器_清洗工作站_医用干燥柜_灭菌耗材-环氧乙烷灭菌器_脉动真空压力蒸汽灭菌器_低温等离子灭菌设备_河南省三强医疗器械有限责任公司 | 驾驶式洗地机/扫地机_全自动洗地机_工业洗地机_荣事达工厂官网 | 泡沫消防车_水罐消防车_湖北江南专用特种汽车有限公司 | 扬尘在线监测系统_工地噪声扬尘检测仪_扬尘监测系统_贝塔射线扬尘监测设备「风途物联网科技」 | 深圳侦探联系方式_深圳小三调查取证公司_深圳小三分离机构 | 广州二手电缆线回收,旧电缆回收,广州铜线回收-广东益福电缆线回收公司 | 深圳市源和塑胶电子有限公司-首页 | 购买舔盐、舔砖、矿物质盐压块机,鱼饵、鱼饲料压块机--请到杜甫机械 | 亿立分板机_曲线_锯片式_走刀_在线式全自动_铣刀_在线V槽分板机-杭州亿协智能装备有限公司 | 洗地机_全自动洗地机_手推式洗地机【上海滢皓环保】 | 黑龙江「京科脑康」医院-哈尔滨失眠医院_哈尔滨治疗抑郁症医院_哈尔滨精神心理医院 | 刑事律师_深圳著名刑事辩护律师_王平聚【清华博士|刑法教授】 | 等离子表面处理机-等离子表面活化机-真空等离子清洗机-深圳市东信高科自动化设备有限公司 | 土壤检测仪器_行星式球磨仪_土壤团粒分析仪厂家_山东莱恩德智能科技有限公司 | 找果网 | 苹果手机找回方法,苹果iPhone手机丢了找回,认准找果网! | 陕西高职单招-陕西高职分类考试网 | 运动木地板价格,篮球馆体育运动木地板生产厂家_欧氏地板 | 卡诺亚轻高定官网_卧室系统_整家定制_定制家居_高端定制_全屋定制加盟_定制家具加盟_定制衣柜加盟 | 双吸泵,双吸泵厂家,OS双吸泵-山东博二泵业有限公司 | 航空铝型材,7系铝型材挤压,硬质阳*氧化-余润铝制品 | 大立教育官网-一级建造师培训-二级建造师培训-造价工程师-安全工程师-监理工程师考试培训 | 玻璃钢罐_玻璃钢储罐_盐酸罐厂家-河北华盛节能设备有限公司 | 穿线管|波纹穿线管|包塑金属软管|蛇皮管?闵彬专注弱电工程? | 全屋整木定制-橱柜,家具定制-四川峨眉山龙马木业有限公司 | 铣刨料沥青破碎机-沥青再生料设备-RAP热再生混合料破碎筛分设备 -江苏锡宝重工 | 嘉兴恒升声级计-湖南衡仪声级计-杭州爱华多功能声级计-上海邦沃仪器设备有限公司 | HEYL硬度计量泵-荧光法在线溶解氧仪-净时测控技术(上海)有限公司 | 不锈钢螺丝,不锈钢螺栓,不锈钢标准件-江苏百德特种合金有限公司 交变/复合盐雾试验箱-高低温冲击试验箱_安奈设备产品供应杭州/江苏南京/安徽马鞍山合肥等全国各地 | 安平县鑫川金属丝网制品有限公司,声屏障,高速声屏障,百叶孔声屏障,大弧形声屏障,凹凸穿孔声屏障,铁路声屏障,顶部弧形声屏障,玻璃钢吸音板 | 阳光1号桔柚_无核沃柑_柑橘新品种枝条苗木批发 - 苧金网 | 南京展台搭建-南京展会设计-南京展览设计公司-南京展厅展示设计-南京汇雅展览工程有限公司 | 钢衬四氟管道_钢衬四氟直管_聚四氟乙烯衬里管件_聚四氟乙烯衬里管道-沧州汇霖管道科技有限公司 | 玻纤土工格栅_钢塑格栅_PP焊接_单双向塑料土工格栅_复合防裂布厂家_山东大庚工程材料科技有限公司 | DDoS安全防护官网-领先的DDoS安全防护服务商 | 烟气换热器_GGH烟气换热器_空气预热器_高温气气换热器-青岛康景辉 |