js canvas實現(xiàn)驗證碼并獲取驗證碼功能
本文實例為大家分享了js canvas制作驗證碼并獲取驗證碼的具體代碼,供大家參考,具體內(nèi)容如下
最近沒事寫了一些小插件,今天要說的是包裝一個驗證碼的js代碼,如下:
/**包裝**/
var xh_digital_code = function(option) {
this.el = option.el;
var self = this;
var click_code = '';
var canvas_id = "xh_canvas_" + xh_randomWord(false, 30);// 生成隨機(jī)id
$(self.el).html('<canvas class="xh_canvas" id="' + canvas_id + '"></canvas>');
var code = xh_drawPic(canvas_id);
$('body').on('click', self.el, function() {
click_code = xh_drawPic(canvas_id);
self.code = click_code;
return;
});
self.code = code;
}
/**繪制驗證碼圖片**/
function xh_drawPic(canvasid) {
var canvas = document.getElementById(canvasid);
var width = canvas.width;
var height = canvas.height;
//獲取該canvas的2D繪圖環(huán)境
var ctx = canvas.getContext('2d');
ctx.textBaseline = 'bottom';
/**繪制背景色**/
ctx.fillStyle = xh_randomColor(180, 240);
//顏色若太深可能導(dǎo)致看不清
ctx.fillRect(0, 0, width, height);
/**繪制文字**/
var str = 'ABCEFGHJKLMNPQRSTWXY123456789abcefghjklmnpqrstwxy';
var code = "";
//生成四個驗證碼
for (var i = 1; i <= 4; i++) {
var txt = str[xh_randomNum(0, str.length)];
code = code + txt;
ctx.fillStyle = xh_randomColor(50, 160);
//隨機(jī)生成字體顏色
ctx.font = xh_randomNum(90, 110) + 'px SimHei';
//隨機(jī)生成字體大小
var x = 10 + i * 50;
var y = xh_randomNum(100, 135);
var deg = xh_randomNum(-30, 30);
//修改坐標(biāo)原點和旋轉(zhuǎn)角度
ctx.translate(x, y);
ctx.rotate(deg * Math.PI / 180);
ctx.fillText(txt, 0, 0);
//恢復(fù)坐標(biāo)原點和旋轉(zhuǎn)角度
ctx.rotate(-deg * Math.PI / 180);
ctx.translate(-x, -y);
}
/**繪制干擾線**/
for (var i = 0; i < 3; i++) {
ctx.strokeStyle = xh_randomColor(40, 180);
ctx.beginPath();
ctx.moveTo(xh_randomNum(0, width / 2), xh_randomNum(0, height / 2));
ctx.lineTo(xh_randomNum(0, width / 2), xh_randomNum(0, height));
ctx.stroke();
}
/**繪制干擾點**/
for (var i = 0; i < 50; i++) {
ctx.fillStyle = xh_randomColor(255);
ctx.beginPath();
ctx.arc(xh_randomNum(0, width), xh_randomNum(0, height), 1, 0, 2 * Math.PI);
ctx.fill();
}
return code;
}
/**生成一個隨機(jī)數(shù)**/
function xh_randomNum(min, max) {
return Math.floor(Math.random() * (max - min) + min);
}
/**生成一個隨機(jī)色**/
function xh_randomColor(min, max) {
var r = xh_randomNum(min, max);
var g = xh_randomNum(min, max);
var b = xh_randomNum(min, max);
return "rgb(" + r + "," + g + "," + b + ")";
}
/**生成一個隨機(jī)碼**/
function xh_randomWord(randomFlag, min, max) {
var str = "",
range = min,
arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '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'];
// 隨機(jī)產(chǎn)生
if (randomFlag) {
range = Math.round(Math.random() * (max - min)) + min;
}
for (var i = 0; i < range; i++) {
pos = Math.round(Math.random() * (arr.length - 1));
str += arr[pos];
}
return str;
}
上面的就是我包裝過的驗證碼js,你們直接復(fù)制即可,就可以用,下面就是引用代碼:
<!--- 引用 --->
<span class="identify-code"></span>
<button class="xh-btn xh-btn-success" id="get_code">獲取驗證碼</button>
<script type="text/javascript">
var c = new xh_digital_code({
el: '.identify-code' // .class名 #id名
});
$('#get_code').click(function(){
// 這個是我寫的一個彈出信息的插件,不用理會,c.code就可以獲取驗證碼里面的信息
$(this).xh_prompt('success', '當(dāng)前驗證碼為:'+c.code, 1000);
});
</script>
效果圖如下:

上面就是效果圖了
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
js限制input只能輸入有效的數(shù)字(第一個不能是小數(shù)點)
有時候我們需要限制input只能輸入有效的數(shù)字,有且只有一個小數(shù)點,第一個不能為小數(shù)點,那么就可以參考下面的函數(shù)來實現(xiàn)2018-09-09
bootstrapValidator 重新啟用提交按鈕的方法
bootstrapValidator 使用中,由于字段檢查等原因,致使提交按鈕失效。如何重新啟用提交按鈕呢?下面小編給大家介紹下bootstrapValidator 重新啟用提交按鈕的方法,需要的朋友可以參考下2017-02-02
uniapp小程序使用高德地圖api實現(xiàn)路線規(guī)劃的示例代碼
路線規(guī)劃常用于出行路線的提前預(yù)覽,我們提供4種類型的路線規(guī)劃,分別為:駕車、步行、公交和騎行,滿足各種的出行場景,這篇文章主要介紹了uniapp小程序使用高德地圖api實現(xiàn)路線規(guī)劃,需要的朋友可以參考下2023-01-01
JS使用ajax從xml文件動態(tài)獲取數(shù)據(jù)顯示的方法
這篇文章主要介紹了JS使用ajax從xml文件動態(tài)獲取數(shù)據(jù)顯示的方法,實例分析了javascript使用Ajax技術(shù)操作XML文件的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03
Javascript表達(dá)式中連續(xù)的 && 和 || 之賦值區(qū)別
了區(qū)分賦值表達(dá)式中出現(xiàn)的連續(xù)的 ‘&&’和 ‘||’的不同的賦值含義,做了一個小測試.2010-10-10
javascript實現(xiàn)將文件保存到本地方法匯總
本文給大家匯總介紹了3中使用javascript實現(xiàn)將文件保存到本地的方法,非常的簡單實用,有需要的小伙伴可以參考下。2015-07-07

