vue輸入框中輸完后光標(biāo)自動(dòng)跳到下一個(gè)輸入框中的實(shí)現(xiàn)方法
前言
最近接到這么一個(gè)需求,做一個(gè)安全碼的輸入框,限制為6位數(shù),但是每一個(gè)寫(xiě)入的值都是一個(gè)輸入框,共計(jì)6個(gè)輸入框,當(dāng)前輸入框?qū)懭胫岛?,光?biāo)自動(dòng)跳到下一個(gè)輸入框中,刪除當(dāng)前輸入框?qū)懭氲闹岛笤僮詣?dòng)跳到上一個(gè)輸入框中。
實(shí)現(xiàn)思路
首先我們需要通過(guò) keyup()
事件在用戶(hù)輸入完字符后,利用 document.getElementsByClassName
方法獲取到輸入框的 dom
元素集合,拿到當(dāng)前元素的 key
和 index
值,通過(guò)判斷確定光標(biāo)是否跳到下一個(gè)輸入框(focus
)還是光標(biāo)失焦(blur
);keydown()
事件主要就是為了防止一旦輸入過(guò)快,一個(gè)輸入框中會(huì)有多個(gè)字符的問(wèn)題。 本章用到的屬性以及方法如下:
focus()
focus()
當(dāng)元素獲得焦點(diǎn)時(shí)(當(dāng)通過(guò)鼠標(biāo)點(diǎn)擊選中元素或通過(guò) tab
鍵定位到元素時(shí)),發(fā)生 focus
事件。focus()
方法觸發(fā) focus
事件,或規(guī)定當(dāng)發(fā)生 focus
事件時(shí)運(yùn)行的函數(shù)。
blur()
當(dāng)元素失去焦點(diǎn)時(shí)發(fā)生 blur
事件。blur()
方法觸發(fā) blur
事件,或規(guī)定當(dāng)發(fā)生 blur
事件時(shí)運(yùn)行的函數(shù)。
keyup()
keyup()
方法觸發(fā) keyup
事件,或規(guī)定當(dāng)發(fā)生 keyup
事件時(shí)運(yùn)行的函數(shù)。
keydown()
當(dāng)鍵盤(pán)鍵被按下時(shí)觸發(fā) keydown
事件。需要注意的是 keydown()
是在鍵盤(pán)按下觸發(fā),而 keyup()
是在鍵盤(pán)松手就會(huì)觸發(fā)。
document.getElementsByClassName()
getElementsByClassName()
方法返回文檔中所有指定類(lèi)名的元素集合,作為 NodeList
對(duì)象。NodeList
對(duì)象代表一個(gè)有順序的節(jié)點(diǎn)列表。NodeList
對(duì)象 我們可通過(guò)節(jié)點(diǎn)列表中的節(jié)點(diǎn)索引號(hào)來(lái)訪(fǎng)問(wèn)列表中的節(jié)點(diǎn)(索引號(hào)由0開(kāi)始)。
完整源碼
<template> <div class="parentBox"> <div v-for="(item, index) in inputList" :key="index"> <input type="text" v-model="item.pinless" class="inputValue" @keyup="keyboard($event, index)" @keydown="expurgate(index)" /> </div> </div> </template> <script> export default { data() { return { // 輸入框循環(huán)的數(shù)組 inputList: [ { pinless: "" }, { pinless: "" }, { pinless: "" }, { pinless: "" }, { pinless: "" }, { pinless: "" }, ], }; }, methods: { // 鍵盤(pán)松開(kāi)事件 keyboard(e, index) { let domNode = document.getElementsByClassName("inputValue"), currInput = domNode[index], nextInput = domNode[index + 1], lastInput = domNode[index - 1]; if (e.keyCode != 8) { if (index < this.inputList.length - 1) { nextInput.focus(); } else { currInput.blur(); } } else { if (index != 0) { lastInput.focus(); } } }, // 鍵盤(pán)按下觸發(fā) expurgate(index) { this.inputList[index].pinless = ""; }, }, }; </script> <style scoped> .parentBox { padding: 20px; display: flex; } .parentBox div:nth-child(n + 2) { margin-left: 4px; } input { color: #606266; font-size: 18px; text-align: center; width: 54px; height: 62px; border: 2px solid gainsboro; border-radius: 4px; } </style>
實(shí)現(xiàn)效果
總結(jié)
到此這篇關(guān)于vue輸入框中輸完后光標(biāo)自動(dòng)跳到下一個(gè)輸入框中的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)vue輸入框輸完自動(dòng)跳到下個(gè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue3獲取和操作DOM元素的項(xiàng)目實(shí)踐
在Vue3中,有時(shí)我們需要直接操作DOM節(jié)點(diǎn),本文主要介紹了Vue3獲取和操作DOM元素的項(xiàng)目實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08淺談Vue3 Composition API如何替換Vue Mixins
這篇文章主要介紹了淺談Vue3 Composition API如何替換Vue Mixins,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04VUE3基于vite封裝條形碼和二維碼組件的詳細(xì)過(guò)程
基礎(chǔ)組件開(kāi)發(fā)是項(xiàng)目業(yè)務(wù)開(kāi)發(fā)的基石, 本文主要介紹了通過(guò)vue3的vite腳手架快速搭建項(xiàng)目, 開(kāi)發(fā)條形碼和二維碼組件的過(guò)程,感興趣的朋友跟隨小編一起看看吧2023-08-08vue-resource攔截器設(shè)置頭信息的實(shí)例
下面小編就為大家?guī)?lái)一篇vue-resource攔截器設(shè)置頭信息的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10vue2 中如何實(shí)現(xiàn)動(dòng)態(tài)表單增刪改查實(shí)例
本篇文章主要介紹了vue2 中如何實(shí)現(xiàn)動(dòng)態(tài)表單增刪改查實(shí)例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06