基于JS實(shí)現(xiàn)一個(gè)隨機(jī)生成驗(yàn)證碼功能
效果展示

實(shí)現(xiàn)原理
1. html:一般就是一個(gè)div: <div id="code"></div> ,樣式根據(jù)需求設(shè)計(jì)。
2. JS:1)將所有的驗(yàn)證碼所用的字符放在一個(gè)字符串中
2)在這個(gè)字符串的字符個(gè)數(shù)以內(nèi),隨機(jī)生成索引號(hào)
3)根據(jù)索引號(hào)查找對(duì)應(yīng)字符,拼接成驗(yàn)證碼的字符串
代碼實(shí)現(xiàn)
HTML:
<div id="code"></div>
CSS:
* {
margin: 0;
padding: 0;
}
div {
width: 80px;
height: 30px;
font-size: 18px;
line-height: 30px;
text-align: center;
color: #333;
border: 1px solid red;
margin: 100px auto;
cursor: pointer;
}
JavaScript:
var codeStr = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
var oDiv = document.getElementById('code');
// 用來生成隨機(jī)整數(shù)
function getRandom(n, m) { // param: (Number, Number)
n = Number(n);
m = Number(m);
// 確保 m 始終大于 n
if (n > m) {
var temp = n;
n = m;
m = temp;
}
// 下有詳細(xì)說明
return Math.floor(Math.random()*(m - n) + n);
}
// 將隨機(jī)生成的整數(shù)下標(biāo)對(duì)應(yīng)的字母放入div中
function getCode() {
var str = '';
// 驗(yàn)證碼有幾位就循環(huán)幾次
for (var i = 0;i < 4;i ++) {
var ran = getRandom(0, 62);
str += codeStr.charAt(ran);
}
oDiv.innerHTML = str;
}
getCode();// 調(diào)用函數(shù),頁面刷新也會(huì)刷新驗(yàn)證碼
// 點(diǎn)擊刷新驗(yàn)證碼
oDiv.onclick = function(){
getCode();
}
代碼分析
JS:
1)將所有的驗(yàn)證碼所用的字符放在一個(gè)字符串中
-- > 代碼第1行,除了字母數(shù)字也可放入中文漢字等。
2)在這個(gè)字符串的字符個(gè)數(shù)以內(nèi),隨機(jī)生成索引號(hào)
-- > 第4行的函數(shù)用于生成隨機(jī)整數(shù),參數(shù) (n, m)為數(shù)字,Number()確保是數(shù)字
默認(rèn)m > n,防止傳參有誤,用if判斷后改正
Math.random() -- > [0,1)
Math.random() * (m - n) -- > [0, m - n)
Math.random() * (m - n) + n -- > [n, m)
為了能將codeStr所有的下標(biāo)都取到,上述m若是codeStr.length,想要取值能取到最后一位,再使用Math.floor()向下取整。
n 為 0,m 為 codeStr.length 則隨機(jī)范圍為codeStr的所有元素下標(biāo)。例(n, m) -- > (0, 62)計(jì)算后的取值范圍:下標(biāo)為[0, 61]的整數(shù)。
3)根據(jù)下標(biāo)查找對(duì)應(yīng)元素,拼接成驗(yàn)證碼的字符串
第17行的函數(shù)getCode()獲取字符串中對(duì)應(yīng)元素,并拼接成字符串返回到頁面中。最后點(diǎn)擊div可不斷生成隨機(jī)驗(yàn)證碼。
完整代碼
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>隨機(jī)生成驗(yàn)證碼</title>
<style>
* {
margin: 0;
padding: 0;
}
div {
width: 80px;
height: 30px;
font-size: 18px;
line-height: 30px;
text-align: center;
color: #333;
border: 1px solid red;
margin: 100px auto;
cursor: pointer;
}
</style>
</head>
<body>
<div id="code"></div>
<script>
var codeStr = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
var oDiv = document.getElementById('code');
// 用來生成隨機(jī)整數(shù)
function getRandom(n, m) { // param: (Number, Number)
n = Number(n);
m = Number(m);
// 確保 m 始終大于 n
if (n > m) {
var temp = n;
n = m;
m = temp;
}
return Math.floor(Math.random()*(m - n) + n);
}
// 將隨機(jī)生成的整數(shù)下標(biāo)對(duì)應(yīng)的字母放入div中
function getCode() {
var str = '';
// 驗(yàn)證碼有幾位就循環(huán)幾次
for (var i = 0;i < 4;i ++) {
var ran = getRandom(0, 62);
str += codeStr.charAt(ran);
}
oDiv.innerHTML = str;
}
getCode();// 調(diào)用函數(shù),頁面刷新也會(huì)刷新驗(yàn)證碼
// 點(diǎn)擊刷新驗(yàn)證碼
oDiv.onclick = function(){
getCode();
}
</script>
</body>
</html>
總結(jié)
以上所述是小編給大家介紹的基于JS實(shí)現(xiàn)一個(gè)隨機(jī)生成驗(yàn)證碼功能,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- js實(shí)現(xiàn)隨機(jī)數(shù)字字母驗(yàn)證碼
- js隨機(jī)生成一個(gè)驗(yàn)證碼
- JS如何生成隨機(jī)驗(yàn)證碼
- JavaScript 隨機(jī)驗(yàn)證碼的生成實(shí)例代碼
- 用jsp頁面生成隨機(jī)的驗(yàn)證數(shù)字碼示例
- JavaScript實(shí)現(xiàn)隨機(jī)五位數(shù)驗(yàn)證碼
- js實(shí)現(xiàn)隨機(jī)8位驗(yàn)證碼
- JS實(shí)現(xiàn)4位隨機(jī)驗(yàn)證碼
- JS 實(shí)現(xiàn)隨機(jī)驗(yàn)證碼功能
- Javascript實(shí)現(xiàn)仿QQ隨機(jī)數(shù)驗(yàn)證
相關(guān)文章
自定義的一個(gè)簡(jiǎn)單時(shí)尚js下拉選擇框
下拉選擇框,是我們?cè)诰W(wǎng)頁中經(jīng)常使用到的,在本文為大家詳細(xì)介紹下使用js使用的下拉選擇框2013-11-11
不刷新網(wǎng)頁就能鏈接新的js文件方法總結(jié)
在本篇文章里小編給大家整理的是關(guān)于不刷新網(wǎng)頁就能鏈接新的js文件方法總結(jié),需要的朋友們參考下。2020-03-03
JavaScript 核心參考教程 RegExp對(duì)象
JavaScript 核心參考教程RegExp對(duì)象,學(xué)習(xí)正則表達(dá)式的朋友可以參考下。2009-10-10
詳解JavaScript節(jié)流函數(shù)中的Throttle
函數(shù)節(jié)流,就是對(duì)會(huì)頻繁觸發(fā)的函數(shù)事件做一些限制,讓這些函數(shù)可以在每隔一定的時(shí)間或者每次滿足一定的條件下再觸發(fā)。一般我們會(huì)給他起一個(gè)名字throttle。也就是節(jié)流的意思。一般這樣的函數(shù)有 resize事件、ontouchmove事件等。2016-07-07
微信小程序?qū)崿F(xiàn)基于三元運(yùn)算驗(yàn)證手機(jī)號(hào)/姓名功能示例
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)基于三元運(yùn)算驗(yàn)證手機(jī)號(hào)/姓名功能,涉及三元運(yùn)算符的判定及字符串正則驗(yàn)證相關(guān)操作技巧,需要的朋友可以參考下2019-01-01

