js實現(xiàn)驗證碼案例
更新時間:2021年10月29日 16:46:15 作者:Q青N年
這篇文章主要為大家詳細介紹了js實現(xiàn)驗證碼案例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了js實現(xià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ū)分大小寫)">
<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()
// 清空之前繪制的內(nèi)容
// 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()//轉(zhuǎn)化為小寫存入驗證碼數(shù)組
// 開始控制字符的繪制位置
var x = 10 +20*i //每一個驗證碼繪制的起始點x坐標
var y = 20 + Math.random()*8// 起始點y坐標
ctx.font = "bold 20px 微軟雅黑"
// 開始旋轉(zhuǎn)字符
var deg = Math.random*-0.5
// canvas 要實現(xiàn)繪制內(nèi)容具有傾斜的效果,必須先平移,目的是把旋轉(zhuǎn)點移動到繪制內(nèi)容的地方
ctx.translate(x,y)
ctx.rotate(deg)
// 設(shè)置繪制的隨機顏色
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},$)`
}
})
隨便寫的案例,有錯誤還請大家多多指教
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
three.js中點對象(Point)和點材質(zhì)(PointsMaterial)的具體使用
本文主要介紹了three.js中點對象(Point)和點材質(zhì)(PointsMaterial)的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-07-07
關(guān)于AOP在JS中的實現(xiàn)與應(yīng)用詳解
這篇文章主要給大家介紹了關(guān)于AOP在JS中的實現(xiàn)與應(yīng)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用JS具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-05-05
淺談JS中String()與 .toString()的區(qū)別
下面小編就為大家?guī)硪黄獪\談JS中String()與 .toString()的區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10
js+html5實現(xiàn)canvas繪制鏤空字體文本的方法
這篇文章主要介紹了js+html5實現(xiàn)canvas繪制鏤空字體文本的方法,涉及html5文字效果的相關(guān)技巧,需要的朋友可以參考下2015-06-06
JavaScript實現(xiàn)body內(nèi)任意節(jié)點的自定義屬性功能示例
這篇文章主要介紹了JavaScript實現(xiàn)body內(nèi)任意節(jié)點的自定義屬性功能,涉及javascript針對DOM節(jié)點的獲取及屬性設(shè)置相關(guān)操作技巧,需要的朋友可以參考下2017-09-09

