JavaScript實(shí)現(xiàn)移動端短信驗(yàn)證碼流程介紹
實(shí)戰(zhàn)效果演示

實(shí)現(xiàn)原理
準(zhǔn)備: 一個(gè)輸入框, 四個(gè)div小盒子
原理: 監(jiān)聽input輸入框,分別讓輸入的四個(gè)數(shù)字展現(xiàn)在那四個(gè)小盒子里,在運(yùn)用css知識,讓四個(gè)小盒子覆蓋輸入框.
附上動畫:

代碼部分
HTML
<div class="val-box" id="val-box">
<input type="text" id="val-code-input" maxlength="4" onkeyup="checkNum(this)" onblur="checkNum(this)">
<div name="val-item"></div>
<div name="val-item"></div>
<div name="val-item"></div>
<div name="val-item"></div>
</div>
JS
首先聊聊 checkNum() 函數(shù), 當(dāng)我們輸入驗(yàn)證碼的時(shí)候,難免會有人輸入一些非數(shù)字的字符進(jìn)去, checkNum() 的作用就是將所有輸入的不是數(shù)字的字符轉(zhuǎn)換為空值.
function checkNum(e) {
e.value = e.value.replace(/[\D]/g,'')
}
我們要做的第一步就是獲取元素,數(shù)據(jù)初始化, 并且讓用戶一開始輸入就去聚焦到輸入框內(nèi).
const valBox = document.querySelector(".val-box")
// 輸入框一被點(diǎn)擊就聚焦到輸入框
valBox.addEventListener("click", () => {
console.log("聚焦");
valCodeInput.focus()
})
第二步, 即時(shí)的反映輸入框內(nèi)的值
// 獲取div小盒子
const valCodeItems = document.getElementsByName("val-item")
// 獲取輸入框
const valCodeInput = document.querySelector("#val-code-input")
const regex = /^[\d]+$/
// 驗(yàn)證碼初始長度為0
let valCodeLength = 0
valCodeInput.addEventListener("input", (e) => {
valCodeLength = valCodeInput.value.length
// 如果輸入的值符合要求
if(valCodeInput.value && regex.test(valCodeInput.value)) {
// 讓div下邊框邊藍(lán)
valCodeItems[valCodeLength - 1].classList.add('available');
// div的值與input的值相對應(yīng)
valCodeItems[valCodeLength - 1].innerText = valCodeInput.value.substring(valCodeLength - 1, valCodeLength)
}
})點(diǎn)擊獲取驗(yàn)證碼或點(diǎn)擊第一個(gè)數(shù)字輸入框時(shí)獲取焦點(diǎn), 并添加available 樣式,使得第一個(gè)小盒子地邊框邊藍(lán)
valCodeItems[0].addEventListener("click", (e) => {
valCodeInput.focus()
valCodeItems[0].classList.add("available")
})
第三步, 完善刪除鍵,當(dāng)刪除鍵抬起的時(shí)候,刪除最后一個(gè)小盒子內(nèi)的數(shù)字,并去除下邊框變藍(lán)效果
window.addEventListener("keyup", (e) => {
if(e.keyCode === 8) {
valCodeItems[valCodeLength].innerText = ""
if(valCodeLength !== 0) {
valCodeItems[valCodeLength].classList.remove("available")
}
}
})
接下來就是最后一步啦, 當(dāng)檢測到輸入框的長度變?yōu)?時(shí),自動發(fā)送短信驗(yàn)證請求.
到此這篇關(guān)于JavaScript實(shí)現(xiàn)移動端短信驗(yàn)證碼流程介紹的文章就介紹到這了,更多相關(guān)JS短信驗(yàn)證碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- javascript實(shí)現(xiàn)發(fā)送短信驗(yàn)證碼案例
- 手動實(shí)現(xiàn)js短信驗(yàn)證碼輸入框
- 用Javascript實(shí)現(xiàn)發(fā)送短信驗(yàn)證碼間隔功能
- JS實(shí)現(xiàn)簡單短信驗(yàn)證碼界面
- JavaScript獲取短信驗(yàn)證碼(周期性)
- JS實(shí)現(xiàn)用戶注冊時(shí)獲取短信驗(yàn)證碼和倒計(jì)時(shí)功能
- JS短信驗(yàn)證碼倒計(jì)時(shí)功能的實(shí)現(xiàn)(沒有驗(yàn)證碼,只有倒計(jì)時(shí))
- 基于JavaScript短信驗(yàn)證碼如何實(shí)現(xiàn)
- javascript發(fā)送短信驗(yàn)證碼實(shí)現(xiàn)代碼
相關(guān)文章
js replace正則表達(dá)式應(yīng)用案例講解
js replace與正則表達(dá)式結(jié)合,可以有效發(fā)揮replace的功效,可以幫助用戶解決替換中的復(fù)制問題,接下來詳細(xì)介紹使用方法,感興趣的朋友可以了解下2013-01-01
js圖數(shù)據(jù)結(jié)構(gòu)處理 迪杰斯特拉算法代碼實(shí)例
這篇文章主要介紹了js圖數(shù)據(jù)結(jié)構(gòu)處理 迪杰斯特拉算法代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
JavaScript使用URL.canParse驗(yàn)證URL的方法詳解
JavaScript誕生以來,一直沒有一種簡單的方法驗(yàn)證URL,現(xiàn)在JavaScript新增了一個(gè)新方法——URL.canParse,文中通過代碼示例和圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12
uniapp中table表格設(shè)置寬度無效的原因以及解決方法
項(xiàng)目中遇到table表格單元格不整齊、錯位等情況,下面這篇文章主要給大家介紹了關(guān)于uniapp中table表格設(shè)置寬度無效的原因以及解決方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04
JavaScript基于ChatGPT實(shí)現(xiàn)打字機(jī)消息回復(fù)
ChatGPT 是一個(gè)基于深度學(xué)習(xí)的大型語言模型,處理自然語言需要大量的計(jì)算資源和時(shí)間,響應(yīng)速度肯定比普通的讀數(shù)據(jù)庫要慢的多,本文介紹了ChatGPT打字機(jī)消息回復(fù)實(shí)現(xiàn)原理,感興趣的同學(xué)可以跟著小編一起學(xué)習(xí)2023-05-05
詳解JavaScript的計(jì)時(shí)器和按鈕效果設(shè)置
這篇文章主要為大家介紹了JavaScript的計(jì)時(shí)器和按鈕效果設(shè)置,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2021-12-12

