js点击更换验证码
显示效果:
使用js实现更换与验证
1、html代码
<p>
<input class="textline fnleft" type="text" name="ryanz" id="ryanz" placeholder="圆形验证码"> <canvas name="yanzm" class="fnright" id="yanzm" width="108" height="48" readonly="" style="cursor:pointer;"> </p>
2、js代码
<script type="text/javascript" src="js/jquery-1.11.0.min.js" ></script> <script> var yzm=''; /**生成一个随机数**/ function randomNum(min,max){ return Math.floor( Math.random()*(max-min)+min); } /**生成一个随机色**/ function randomColor(min,max){ var r = randomNum(min,max); var g = randomNum(min,max); var b = randomNum(min,max); return "rgb("+r+","+g+","+b+")"; } //页面开启调用生成验证码方法 drawPic(); document.getElementById("yanzm").onclick = function(e){ //重置验证码 yzm=''; e.preventDefault(); drawPic(); //打印当前验证码 console.log(yzm); } /**绘制验证码图片**/ function drawPic(){ //alert(a); var yanzm=document.getElementById("yanzm"); var width=yanzm.width; var height=yanzm.height; var ctx = yanzm.getContext('2d'); ctx.textBaseline = 'bottom'; /**绘制背景色**/ ctx.fillStyle = randomColor(180,240); //颜色若太深可能导致看不清 ctx.fillRect(0,0,width,height); /**绘制文字**/ var str = 'ABCEFGHJKLMNPQRSTWXY123456789'; for(var i=0; i<4; i++){ //生成的验证码 var txt = str[randomNum(0,str.length)]; ctx.fillStyle = randomColor(50,160); //随机生成字体颜色 ctx.font = randomNum(15,40)+'px SimHei'; //随机生成字体大小 var x = 10+i*25; var y = randomNum(25,45); var deg = randomNum(-45, 45); //修改坐标原点和旋转角度 ctx.translate(x,y); ctx.rotate(deg*Math.PI/180); ctx.fillText(txt, 0,0); //恢复坐标原点和旋转角度 ctx.rotate(-deg*Math.PI/180); ctx.translate(-x,-y); //拼接成验证码的最终值 yzm=yzm+txt; } /**绘制干扰点**/ for(var i=0; i<100; i++){ ctx.fillStyle = randomColor(0,255); ctx.beginPath(); ctx.arc(randomNum(0,width),randomNum(0,height), 1, 0, 2*Math.PI); ctx.fill(); } }
3、验证输入的值是否与图中的一致
var state=false; $("#ryanz").blur(function(){ var ydyanz= $("#ryanz").val(); if(ydyanz.length==0){ alert("请输入验证码") }else if(ydyanz.toLowerCase()!=yzm.toLowerCase()){ alert("图片验证码输入错误") //刷新验证码 // drawPic(); }else{ alert("验证码输入正确") state=true; } }); </script>