基于云平台网站群建设,wordpress没有外观,Dw做网站怎么加logo,东营企业网站seo前言 最近接到这么一个需求#xff0c;做一个安全码的输入框#xff0c;限制为6位数#xff0c;但是每一个写入的值都是一个输入框#xff0c;共计6个输入框#xff0c;当前输入框写入值后#xff0c;光标自动跳到下一个输入框中#xff0c;删除当前输入框写入的值后再自…前言 最近接到这么一个需求做一个安全码的输入框限制为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开始)。 完整源码
templatediv classparentBoxdiv v-for(item, index) in inputList :keyindexinput typetext v-modelitem.pinless classinputValue keyupkeyboard($event, index) keydownexpurgate(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实现效果