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>

浙公网安备 33010602011771号