vue3怎么实现6位支付密码输入框
具体的需求: 在客户信息表格的操作栏中,点击修改支付密码按钮,会跳转到6位支付密码输入框组件页面。同时,要求输入框密文显示、不可编辑、不可回退、即时显示;到达6位数,自动进入确认支付密码;确认支付密码到达6位数,自动检验两次输入密码的一致性,显示确定按钮。此功能是为了用于在银行中,客户用设备输入密码,柜员不可见密码,但柜员可以进行提示操作。
具体的问题: 1、如何实现密文显示,且每个框只能输入1位数字;2、如何实现输入框不可编辑、不可回退;3、如何检验两次输入密码的一致性;4、如果自己的业务需要对键盘按键做限制,该怎么处理。

一、代码总览
实现6位支付密码输入框组件的代码如下,复制即可直接使用!
{{ "输入密码" }}{{ "确认密码" }}{{ "确定" }} {{ "重新输入" }} {{ state.tipContent }}
二、问题解析
1、问:如何实现密文显示,且每个框只能输入1位数字?
答: 对于实现密文显示,将输入框的类型type改成password即可。对于实现每个框只能输入1位数字,这里只使用输入框的maxlength属性效果并不完美,可能会出现限制不住的情况,需要在@input事件中,判断当前元素值的长度,如果大于等于1,则通过nextElementSibling.focus(),让光标聚焦到下一个兄弟元素上去。
2、问:如何实现输入框不可编辑、不可回退?
答:使用了输入框的disabled属性,通过在@input事件中,将当前输入元素的disabled属性变为true即可。这里把输入框的disabled属性值,分别存在了一个数组中,为了方便后续的获取修改。
3、问:如何检验两次输入密码的一致性?
答:使用了最简单的for循环,遍历输入密码数组和确认密码数组,一一比较它们的元素值,有一个不相等就不等,通过return;结束整个函数的执行。
4、问:如果自己的业务需要对键盘按键做限制,该怎么处理?
答:可以为输入框添加@keydown或@keyup事件,在回调内部通过对key做判断,来对不同的按键做一些业务的处理。