Vue.js實現(xiàn)移動端短信驗證碼功能
現(xiàn)在的短信驗證碼一般為4位或6位,則頁面中會相應(yīng)的顯示4個或6個文本框,如圖所示

當(dāng)點擊注冊進入到輸入驗證碼頁面的時候,第一個框自動獲取光標(biāo),依次輸入,不可直接輸入第三個或第四個框的值,
input輸入框是循環(huán)出來的,代碼如下:
<div class="sms_input"> <div v-for="n in sms.numbers-1"><input v-if="sms.show[n-1]" disabled="true" v-model="sms.msg[n-1]"></div> <div><input v-if="sms.show[sms.numbers-1]" v-model="sms.msg[sms.numbers-1]" pattern="[0-9]*" type="number" ref="sms_input" @keyup="sms_input($event)" oninput="if(value.length>1)value=value.slice(0,1)"></div> <div v-for="n in sms.numbers-1"><input v-if="sms.show[n+sms.numbers-1]" disabled="true"></div> </div>
第一第三行不解釋,相信聰明的你可以看懂, 讓我們一起看第二行,keyup是當(dāng)鍵盤按下的時候執(zhí)行的函數(shù),ref則為傳值,
data () {
return {
……
sms: {
numbers: 4,
msg: [],
show: [],
position: 0
},
……
}
}
_setSmsInputDisplay () {
var arr = []
for (var i = 0; i < this.sms.numbers * 2 - 1; i++) {
arr.push(i >= this.sms.numbers - 1 - this.sms.position && i < this.sms.numbers - 1 - this.sms.position + this.sms.numbers ? 1 : 0)
}
this.sms.show = arr
},
_resetSms () {
this.sms.msg = []
for (var i = 0; i < this.sms.numbers; i++) {
this.sms.msg.push(null)
}
this.sms.position = 0
this._setSmsInputDisplay()
this.$nextTick(function () {
this.$refs.sms_input.focus()
})
}
submit () {
this.$api.post('signin', {
mobile: this.mobile,
captcha: this.captcha
}, r => {
this.$router.push('/main')
console.log(r)
})
},
sms_input (e) {
if (e.keyCode === 8) { // 刪除
if (this.sms.position > 0) {
this.sms.position--
this.sms.msg.splice(-2, 1)
this.sms.msg.unshift(null)
this._setSmsInputDisplay()
}
} else if (e.keyCode >= 48 && e.keyCode <= 57) { // 僅可以輸入數(shù)字
if (this.sms.position < this.sms.numbers - 1) {
this.sms.position++
this.sms.msg.splice(-1, 1, String.fromCharCode(e.keyCode))
this.sms.msg.shift()
this.sms.msg.push(null)
this._setSmsInputDisplay()
} else {
document.activeElement.blur() // hide keyboard for iOS
console.log(this.sms.msg.join(''))
this.submit()
}
} else {
this.$refs.sms_input.value = '' // remove NaN
}
}
如此,便可實現(xiàn)驗證碼輸入功能,代碼清晰,聰明的你若有疑問,隨時留言,我看到后定會秒回。
以上所述是小編給大家介紹的Vue.js實現(xiàn)移動端短信驗證碼功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
vue2.x中的provide和inject用法小結(jié)
這篇文章主要介紹了vue2.x中的provide和inject用法小結(jié),本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2023-12-12
前端在el-dialog中嵌套多個el-dialog代碼實現(xiàn)
最近使用vue+elementUI做項目,使用過程中很多地方會用到dialog這個組件,有好幾個地方用到了dialog的嵌套,下面這篇文章主要給大家介紹了關(guān)于前端在el-dialog中嵌套多個el-dialog代碼實現(xiàn)的相關(guān)資料,需要的朋友可以參考下2024-01-01
vue2中組件互相調(diào)用實例methods中的方法實現(xiàn)詳解
vue在同一個組件內(nèi),方法之間經(jīng)常需要互相調(diào)用,下面這篇文章主要給大家介紹了關(guān)于vue2中組件互相調(diào)用實例methods中的方法實現(xiàn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08

