vue怎么实现验证码输入框组件

  介绍

这篇文章主要介绍了vue怎么实现验证码输入框组件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

vue是什么

vue是一套用于构建用户界面的渐进式JavaScript框架,vue与其它大型框架的区别是,使用vue可以自底向上逐层应用,其核心库只关注视图层,方便与第三方库和项目整合,且使用vue可以采用单文件组件和vue生态系统支持的库开发复杂的单页应用。

先来看波完成效果图

 vue怎么实现验证码输入框组件”>,</p> <p> <强>需求</强> </p> <p>输入4位或6位短信验证码,输入完成后收起键盘</p> <p> <强>实现步骤</强> </p> <p>第一步</p> <p>布局排版</p> <pre类= & lt; div 类=皊ecurity-code-wrap"比;=?& lt; label ; code"比;   & lt;才能ul 类=皊ecurity-code-container"比;   & lt;才能li 类=癴ield-wrap", v=?项目,,指数),拷贝number",:关键=癷ndex"比;   ,,& lt;小姐:类=癱har-field"在{{价值(指数),| |,占位符}}& lt;/i>   & lt;才能/li>   & lt;才能/ul>   ,& lt;/label>   ,& lt; input  ref=癷nput",类=癷nput-code", @keyup=癶andleInput(事件)美元“,v模型=皏alue"   ,,id=癱ode", name=癱ode",类型=皌el",:最大长度=皀umber"   ,,自动更正=皁ff",自动完成=皁ff", autocapitalize=皁ff"比;   & lt;/div>

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

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

隐藏输入框

.input-code  {   ,位置:绝对;   ,左:-9999 px;   ,最高:-99999 px;   ,宽度:0;   ,高度:0;   ,不透明度:0;   可见,溢出:;   ,z - index: 1;   }

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

第二步

处理验证码输入

handleSubmit (), {   这。美元发出(& # 39;输入# 39;,,this.value)   },   handleInput (e), {   这。refs.input.value 美元;=this.value   ,if  (this.value.length 祝辞=,this.number), {   this.hideKeyboard才能()   ,}   ,this.handleSubmit ()   }

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

第三步

完成输入后关闭虚拟键盘

hideKeyboard (), {   ,//输入完成隐藏键盘   ,document.activeElement.blur (),//, ios隐藏键盘   这。$ refs.input.blur (),//, android隐藏键盘   }

<>强组件完整代码

& lt; !——四位验证码输入框组件——比;   & lt; template>   ,& lt; div 类=皊ecurity-code-wrap"比;=?& lt; label ; code"比;   & lt;才能ul 类=皊ecurity-code-container"比;   & lt;才能li 类=癴ield-wrap", v=?项目,,指数),拷贝number",:关键=癷ndex"比;   ,,& lt;小姐:类=癱har-field"在{{价值(指数),| |,占位符}}& lt;/i>   & lt;才能/li>   & lt;才能/ul>   ,& lt;/label>   ,& lt; input  ref=癷nput",类=癷nput-code", @keyup=癶andleInput(事件)美元“,v模型=皏alue"   ,,id=癱ode", name=癱ode",类型=皌el",:最大长度=皀umber"   ,,自动更正=皁ff",自动完成=皁ff", autocapitalize=皁ff"比;   ,& lt;/div>   & lt;/template>   & lt; script>   ,export  default  {   ,名字:& # 39;SecurityCode& # 39;   ,//component 属性   ,道具:{   ,,数量:{   类型:才能,号码,   ,,默认值:4   ,,},   ,,占位符:{   ,,类型:字符串,   ,,默认值:& # 39;& # 39;   ,,}   },   ,//变量   ,数据(){   return {才能   ,,值:& # 39;& # 39;   ,,}   },   ,方法:{   hideKeyboard才能(),{//,才能输入完成隐藏键盘   document.activeElement.blur才能(),//,ios隐藏键盘   这才能。$ refs.input.blur (),//, android隐藏键盘   ,,},   handleSubmit才能(),{   美元。才能发出(& # 39;输入# 39;,,this.value)   ,,},   handleInput才能(e), {   这才能。refs.input.value 美元;=this.value   if 才能;(this.value.length 祝辞=,this.number), {   ,,this.hideKeyboard ()   ,,}   this.handleSubmit才能()   ,,}   ,}   ,}   & lt;/script>   & lt; style  scoped  lang=發ess"比;   ,.security-code-wrap  {   ,溢出:隐藏;   ,}   ,.security-code-container  {   ,保证金:0;   ,填充:0;   ,显示:flex;   ,justify-content:中心;   ,.field-wrap  {   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

vue怎么实现验证码输入框组件