vue输入框中输完后光标自动跳到下一个输入框中的实现方法
前言
最近接到这么一个需求,做一个安全码的输入框,限制为6位数,但是每一个写入的值都是一个输入框,共计6个输入框,当前输入框写入值后,光标自动跳到下一个输入框中,删除当前输入框写入的值后再自动跳到上一个输入框中。
实现思路
首先我们需要通过 keyup() 事件在用户输入完字符后,利用 document.getElementsByClassName 方法获取到输入框的 dom 元素集合,拿到当前元素的 key 和 index 值,通过判断确定光标是否跳到下一个输入框(focus)还是光标失焦(blur);keydown() 事件主要就是为了防止一旦输入过快,一个输入框中会有多个字符的问题。 本章用到的属性以及方法如下:
focus()
focus() 当元素获得焦点时(当通过鼠标点击选中元素或通过 tab 键定位到元素时),发生 focus 事件。focus() 方法触发 focus 事件,或规定当发生 focus 事件时运行的函数。
blur()
当元素失去焦点时发生 blur 事件。blur() 方法触发 blur 事件,或规定当发生 blur 事件时运行的函数。
keyup()
keyup() 方法触发 keyup 事件,或规定当发生 keyup 事件时运行的函数。
keydown()
当键盘键被按下时触发 keydown 事件。需要注意的是 keydown() 是在键盘按下触发,而 keyup() 是在键盘松手就会触发。
document.getElementsByClassName()
getElementsByClassName() 方法返回文档中所有指定类名的元素集合,作为 NodeList 对象。NodeList 对象代表一个有顺序的节点列表。NodeList 对象 我们可通过节点列表中的节点索引号来访问列表中的节点(索引号由0开始)。
完整源码
<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 {
// 输入框循环的数组
inputList: [
{ pinless: "" },
{ pinless: "" },
{ pinless: "" },
{ pinless: "" },
{ pinless: "" },
{ pinless: "" },
],
};
},
methods: {
// 键盘松开事件
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();
}
}
},
// 键盘按下触发
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>
实现效果

总结
到此这篇关于vue输入框中输完后光标自动跳到下一个输入框中的实现方法的文章就介绍到这了,更多相关vue输入框输完自动跳到下个内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Vue的根路径为什么不能作为跳板跳转到其他页面(问题诊断及方案)
文章主要介绍了Vue应用中路由配置错误的诊断和解决方案,根路径配置错误和未正确使用`<router-view>`标签是常见的问题,会导致路由参数无法正常传递,感兴趣的朋友跟随小编一起看看吧2025-03-03
Vue3+Vite+TS实现二次封装element-plus业务组件sfasga
这篇文章主要介绍了在Vue3+Vite+TS的基础上实现二次封装element-plus业务组件sfasga,下面文章也将围绕实现二次封装element-plus业务组件sfasga的相关介绍展开相关内容,具有一定的参考价值,需要的小伙伴可恶意参考一下2021-12-12
vue elementui 实现图片上传后拖拽排序功能示例代码
这篇文章主要介绍了vue elementui 实现图片上传后拖拽排序功能,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-01-01


最新评论