js實(shí)現(xiàn)驗(yàn)證碼案例
本文實(shí)例為大家分享了js實(shí)現(xiàn)驗(yàn)證碼的具體代碼,供大家參考,具體內(nèi)容如下
css代碼:
input{ width: 200px; height: 32px; border: 1px solid #000; box-sizing: border-box; } #c1{ vertical-align: middle; box-sizing: border-box; cursor: pointer; } #btn{ display: block; margin-top: 20px; height: 32px; font-size: 16px; }
HTML代碼:
<div class="code"> <input type="text" value="" id="inputValue" placeholder="請(qǐng)輸入驗(yàn)證碼(不區(qū)分大小寫)"> <canvas id="c1" width="100" height="30" style="border:1px solid black"></canvas> <br> <button id="btn">提交</button> </div>
js代碼:
使用了部分jQuery的方法,請(qǐng)記得先引入jQuery
$(function(){ // 存放隨機(jī)的驗(yàn)證碼 var showNum = [] draw(showNum) $("#c1").click(function(){ draw(showNum) }) $("#btn").click(function(){ var s = $("#inputValue").val().toLowerCase() var s1 = showNum.join("") if (s==s1) { alert("提交成功") }else{ alert("驗(yàn)證碼錯(cuò)誤") } draw(showNum) }) // 封裝一個(gè)把隨機(jī)驗(yàn)證碼放在畫布上 function draw(showNum){ // 獲取canvas var canvas = $("#c1") var ctx = canvas[0].getContext("2d") // 獲取畫布的寬高 var canvas_width = canvas.width() var canvas_height = canvas.height() // 清空之前繪制的內(nèi)容 // 0,0清空的起始坐標(biāo) // 矩形的寬高 ctx.clearRect(0,0,canvas_width,canvas_height) // 開始繪制 var scode = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,1,2,3,4,5,6,7,8,9," var arrCode = scode.split(",") var arrLength = arrCode.length for(var i = 0;i<4;i++){ var index = Math.floor(Math.random()*arrCode.length) var txt = arrCode[index]//隨機(jī)一個(gè)字符 showNum[i] = txt.toLowerCase()//轉(zhuǎn)化為小寫存入驗(yàn)證碼數(shù)組 // 開始控制字符的繪制位置 var x = 10 +20*i //每一個(gè)驗(yàn)證碼繪制的起始點(diǎn)x坐標(biāo) var y = 20 + Math.random()*8// 起始點(diǎn)y坐標(biāo) ctx.font = "bold 20px 微軟雅黑" // 開始旋轉(zhuǎn)字符 var deg = Math.random*-0.5 // canvas 要實(shí)現(xiàn)繪制內(nèi)容具有傾斜的效果,必須先平移,目的是把旋轉(zhuǎn)點(diǎn)移動(dòng)到繪制內(nèi)容的地方 ctx.translate(x,y) ctx.rotate(deg) // 設(shè)置繪制的隨機(jī)顏色 ctx.fillStyle = randomColor() ctx.fillText(txt,0,0) // 把canvas復(fù)原 ctx.rotate(-deg) ctx.translate(-x,-y) } for(var i = 0;i<30;i++){ if (i<5) { // 繪制線 ctx.strokeStyle = randomColor() ctx.beginPath() ctx.moveTo(Math.random()*canvas_width,Math.random()*canvas_height) ctx.lineTo(Math.random()*canvas_width,Math.random()*canvas_height) ctx.stroke() } // 繪制點(diǎn) ctx.strokeStyle = randomColor() ctx.beginPath() var x = Math.random()*canvas_width var y = Math.random()*canvas_height ctx.moveTo(x,y) ctx.lineTo(x+1,y+1) ctx.stroke() } } // 隨機(jī)顏色 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},$)` } })
隨便寫的案例,有錯(cuò)誤還請(qǐng)大家多多指教
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Jsp生成頁面驗(yàn)證碼的方法[附代碼]
- JavaScript 驗(yàn)證碼的實(shí)例代碼(附效果圖)
- js實(shí)現(xiàn)簡(jiǎn)單的驗(yàn)證碼
- js實(shí)現(xiàn)點(diǎn)擊獲取驗(yàn)證碼倒計(jì)時(shí)效果
- JS 驗(yàn)證碼功能的三種實(shí)現(xiàn)方式
- js生成的驗(yàn)證碼的實(shí)現(xiàn)與技術(shù)分析
- js生成驗(yàn)證碼并直接在前端判斷
- js+canvas實(shí)現(xiàn)滑動(dòng)拼圖驗(yàn)證碼功能
- JS制作圖形驗(yàn)證碼實(shí)現(xiàn)代碼
- js實(shí)現(xiàn)登錄注冊(cè)框手機(jī)號(hào)和驗(yàn)證碼校驗(yàn)(前端部分)
相關(guān)文章
layui 解決form表單點(diǎn)擊無反應(yīng)的問題
今天小編就為大家分享一篇layui 解決form表單點(diǎn)擊無反應(yīng)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-10-10JS實(shí)現(xiàn)十分鐘倒計(jì)時(shí)代碼實(shí)例
在本篇文章里我們給大家分享了關(guān)于JS實(shí)現(xiàn)十分鐘倒計(jì)時(shí)的相關(guān)實(shí)例代碼,有需要的朋友們可以學(xué)習(xí)下。2018-10-10JS監(jiān)控關(guān)閉瀏覽器操作的實(shí)例詳解
這篇文章主要介紹了JS監(jiān)控關(guān)閉瀏覽器操作的實(shí)例詳解的相關(guān)資料,希望通過本大家能幫助到大家,需要的朋友可以參考下2017-09-09JS組件Bootstrap Table表格行拖拽效果實(shí)現(xiàn)代碼
這篇文章分享了JS組件Bootstrap Table表格行拖拽效果實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2015-12-12javascript實(shí)現(xiàn)的元素拖動(dòng)函數(shù)宿主為瀏覽器
這篇文章主要介紹了javascript實(shí)現(xiàn)的元素拖動(dòng),將相應(yīng)的元素對(duì)象的引用傳到函數(shù)中2014-07-07在點(diǎn)擊div中的p時(shí),如何阻止事件冒泡
本文主要介紹了在點(diǎn)擊div中的p時(shí),如何阻止事件冒泡的方法,具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-02-02js實(shí)現(xiàn)表格拖動(dòng)選項(xiàng)
這篇文章主要為大家詳細(xì)介紹了原生js實(shí)現(xiàn)表格拖動(dòng)選項(xiàng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04跟我學(xué)Node.js(四)---Node.js的模塊載入方式與機(jī)制
Node.js中模塊可以通過文件路徑或名字獲取模塊的引用。模塊的引用會(huì)映射到一個(gè)js文件路徑,除非它是一個(gè)Node內(nèi)置模塊。Node的內(nèi)置模塊公開了一些常用的API給開發(fā)者,并且它們?cè)贜ode進(jìn)程開始的時(shí)候就預(yù)加載了。2014-06-06