js實現驗證碼案例
更新時間:2021年10月29日 16:46:15 作者:Q青N年
這篇文章主要為大家詳細介紹了js實現驗證碼案例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了js實現驗證碼的具體代碼,供大家參考,具體內容如下
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ū)分大小寫)"> <canvas id="c1" width="100" height="30" style="border:1px solid black"></canvas> <br> <button id="btn">提交</button> </div>
js代碼:
使用了部分jQuery的方法,請記得先引入jQuery
$(function(){ // 存放隨機的驗證碼 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("驗證碼錯誤") } draw(showNum) }) // 封裝一個把隨機驗證碼放在畫布上 function draw(showNum){ // 獲取canvas var canvas = $("#c1") var ctx = canvas[0].getContext("2d") // 獲取畫布的寬高 var canvas_width = canvas.width() var canvas_height = canvas.height() // 清空之前繪制的內容 // 0,0清空的起始坐標 // 矩形的寬高 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]//隨機一個字符 showNum[i] = txt.toLowerCase()//轉化為小寫存入驗證碼數組 // 開始控制字符的繪制位置 var x = 10 +20*i //每一個驗證碼繪制的起始點x坐標 var y = 20 + Math.random()*8// 起始點y坐標 ctx.font = "bold 20px 微軟雅黑" // 開始旋轉字符 var deg = Math.random*-0.5 // canvas 要實現繪制內容具有傾斜的效果,必須先平移,目的是把旋轉點移動到繪制內容的地方 ctx.translate(x,y) ctx.rotate(deg) // 設置繪制的隨機顏色 ctx.fillStyle = randomColor() ctx.fillText(txt,0,0) // 把canvas復原 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() } // 繪制點 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() } } // 隨機顏色 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},$)` } })
隨便寫的案例,有錯誤還請大家多多指教
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
JS組件Bootstrap Table表格行拖拽效果實現代碼
這篇文章分享了JS組件Bootstrap Table表格行拖拽效果實現代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2015-12-12跟我學Node.js(四)---Node.js的模塊載入方式與機制
Node.js中模塊可以通過文件路徑或名字獲取模塊的引用。模塊的引用會映射到一個js文件路徑,除非它是一個Node內置模塊。Node的內置模塊公開了一些常用的API給開發(fā)者,并且它們在Node進程開始的時候就預加載了。2014-06-06