vue实现验证码输入框组件

网友投稿 1128 2023-03-06


vue实现验证码输入框组件

先来看波完成效果图

需求

输入4位或6位短信验证码,输入完成后收起键盘

实现步骤

第一步

布局排版

{{value[index] || placeholder}}

id="code" name="code" type="tel" :maxlength="number"

autocorrect="off" autocomplete="off" autocapitalize="off">

使用li元素来模拟输入框的显示,没有别的目的,就只是为了语义化,当然你也可以使用其他任意一个元素来模拟,比如div。

使用label标签的好处在于它可以跟input的click事件关联上,一方面实现了语义化解决方案,另一方面也省去了我们通过js来唤起虚拟键盘。

隐藏输入框

.input-code {

position: absolute;

left: -9999px;

top: -99999px;

http://width: 0;

height: 0;

opacity: 0;

overflow: visible;

z-index: -1;

}

将真实的输入框定位到屏幕可视区域以外的地方,虚拟键盘被唤起时,就不会将页面往上顶了。所以你的验证码输入组件一定要放在虚拟键盘遮挡不了的地方。

第二步

处理验证码输入

handleSubmit() {

this.$emit('input', this.value)

},

handleInput(e) {

this.$refs.input.value = this.value

if (this.value.length >= this.number) {

this.hideKeyboard()

}

this.handleSubmit()

}

输入时,给输入框赋一次值,是为了解决android端上输入框失焦后重新聚焦,输入光标会定在第一位的前面,经过赋值再聚焦,光标的位置就会显示在最后一位后面。

第三步

完成输入后关闭虚拟键盘

hideKeyboard() {

// 输入完成隐藏键盘

document.activeElement.blur() // ios隐藏键盘

this.$refs.input.blur() // android隐藏键盘

}

组件完整代码

{{value[index] || placeholder}}

id="code" name="code" type="tel" :maxlength="number"

autocorrect="off" autocomplete="off" autocapitalize="off">

组件使用代码

总结

以上所述是给大家介绍的vue实现验证码输入框组件,希望对大家有所帮助,如果大家有任何疑问请给我留言,会及时回复大家的。在此也非常感谢大家对我们网站的支持!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring boot中PropertySource注解的使用方法详解
下一篇:入库接口测试用例图例大全(入库的数据流程图)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~