仿原生验证码自己切换输入

337 阅读2分钟

我正在参加 码上掘金体验活动,详情:show出你的创意代码块

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第6天,点击查看活动详情

这是之前的一个项目需求,要求实现一个原生app 输入验证码的一个效果

主要效果就是输入完一个数字 当前输入框移动到一个要输入的位置 直到输入完成

截图3.png

这个只是一个demo 看到这个需求 首先想到的是键盘监听事件 关于键盘监听事件分别有3个事件

  • keyup 按键被松开触发
  • keydown 按键被按下时触发的
  • keypress 按键被按下触发的,需要产生字符 (这个用起来和keydown容易混淆,keypress是用户按下一个按键,并产生一个字符时才会触发 如:shift、alt之类的按键是不会触发的,而keydown只要你按下键盘按键就会触发)

1、 我写这个的主要思路是用一个div框里包这一个input框 我在input框里输入完成,利用绝对定位,然后给left赋值,向右自动跳

2、 其实这个还有另一个思路,就是每个div框里就有一个input框,输入完之后input框隐藏,显示出输入的数字,下一个input框自动显示

我现在写的是第一种方法,第二种方法是我之后才有的一个思路

这两种方法都用到了keyup监听事件,在触发keyup事件之后,如果是第一个方法,需要将包含input框的块向右移动,如果是第二种方法 需要隐藏当前,显示下一个。

还需要添加键盘的delete删除事件,清空当前,向左移动。

此外还添加blur失去焦点的监听事件,主要是对输入的数字进行校验,

还添加了自动复获取焦点的方法 el.focus() 但是在ios手机上 自动获取交点会失效,因为只有在监听了用户出发的事件的函数中执行 focus 才有用

截图4.png

下面是我的代码块 欢迎大家指点

code.juejin.cn/pen/7085988…