Vue.js实现移动端短信验证码功能


Posted in Javascript onMarch 29, 2017

现在的短信验证码一般为4位或6位,则页面中会相应的显示4个或6个文本框,如图所示

Vue.js实现移动端短信验证码功能

当点击注册进入到输入验证码页面的时候,第一个框自动获取光标,依次输入,不可直接输入第三个或第四个框的值,

input输入框是循环出来的,代码如下:

<div class="sms_input">
  <div v-for="n in sms.numbers-1"><input v-if="sms.show[n-1]" disabled="true" v-model="sms.msg[n-1]"></div>
  <div><input v-if="sms.show[sms.numbers-1]" v-model="sms.msg[sms.numbers-1]" pattern="[0-9]*" type="number" ref="sms_input" @keyup="sms_input($event)" oninput="if(value.length>1)value=value.slice(0,1)"></div>
  <div v-for="n in sms.numbers-1"><input v-if="sms.show[n+sms.numbers-1]" disabled="true"></div>
 </div>

第一第三行不解释,相信聪明的你可以看懂, 让我们一起看第二行,keyup是当键盘按下的时候执行的函数,ref则为传值,

data () {
  return {
   ……
   sms: {
    numbers: 4,
    msg: [],
    show: [],
    position: 0
   },
  ……
  }
 }
_setSmsInputDisplay () {
   var arr = []
   for (var i = 0; i < this.sms.numbers * 2 - 1; i++) {
    arr.push(i >= this.sms.numbers - 1 - this.sms.position && i < this.sms.numbers - 1 - this.sms.position + this.sms.numbers ? 1 : 0)
   }
   this.sms.show = arr
  },
  _resetSms () {
   this.sms.msg = []
   for (var i = 0; i < this.sms.numbers; i++) {
    this.sms.msg.push(null)
   }
   this.sms.position = 0
   this._setSmsInputDisplay()
   this.$nextTick(function () {
    this.$refs.sms_input.focus()
   })
  }
  submit () {
   this.$api.post('signin', {
    mobile: this.mobile,
    captcha: this.captcha
   }, r => {
    this.$router.push('/main')
    console.log(r)
   })
  },
  sms_input (e) {
   if (e.keyCode === 8) { // 删除
    if (this.sms.position > 0) {
     this.sms.position--
     this.sms.msg.splice(-2, 1)
     this.sms.msg.unshift(null)
     this._setSmsInputDisplay()
    }
   } else if (e.keyCode >= 48 && e.keyCode <= 57) { // 仅可以输入数字
    if (this.sms.position < this.sms.numbers - 1) {
     this.sms.position++
     this.sms.msg.splice(-1, 1, String.fromCharCode(e.keyCode))
     this.sms.msg.shift()
     this.sms.msg.push(null)
     this._setSmsInputDisplay()
    } else {
     document.activeElement.blur() // hide keyboard for iOS
     console.log(this.sms.msg.join(''))
     this.submit()
    }
   } else {
    this.$refs.sms_input.value = '' // remove NaN
   }
  }

如此,便可实现验证码输入功能,代码清晰,聪明的你若有疑问,随时留言,我看到后定会秒回。

以上所述是小编给大家介绍的Vue.js实现移动端短信验证码功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js替换字符串的所有示例代码
Jul 23 Javascript
IE下双击checkbox反应延迟问题的解决方法
Mar 27 Javascript
简介JavaScript中的setDate()方法的使用
Jun 11 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
Oct 23 Javascript
AngularJS实现的获取焦点及失去焦点时的表单验证功能示例
Oct 25 Javascript
解析Json字符串的三种方法日常常用
May 02 Javascript
在小程序Canvas中使用measureText的方法示例
Oct 19 Javascript
node+express框架中连接使用mysql(经验总结)
Nov 10 Javascript
javascript中如何判断类型汇总
May 14 Javascript
elementui之el-tebs浏览器卡死的问题和使用报错未注册问题
Jul 06 Javascript
浅谈Vue3 Composition API如何替换Vue Mixins
Apr 29 Javascript
基于javascript的无缝滚动动画1
Aug 07 Javascript
Angular2入门--架构总览
Mar 29 #Javascript
整理关于Bootstrap表单的慕课笔记
Mar 29 #Javascript
AngularJS中$http的交互问题
Mar 29 #Javascript
Angular2开发——组件规划篇
Mar 28 #Javascript
jquery实现静态搜索功能(可输入搜索文字)
Mar 28 #jQuery
jQuery插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
Mar 28 #jQuery
关于Node.js中Buffer的一些你可能不知道的用法
Mar 28 #Javascript
You might like
完美解决PHP中文乱码
2009/11/26 PHP
ecshop后台编辑器替换成ueditor编辑器
2015/03/03 PHP
PHP输出Excel PHPExcel的方法
2018/07/26 PHP
FLASH 广告之外的链接
2008/12/16 Javascript
jQuery fadeTo方法调整图片的透明度使用介绍
2013/05/06 Javascript
jquery异步跨域访问代码
2013/06/28 Javascript
jQuery 三击事件实现代码
2013/09/11 Javascript
基于jQuery的判断iPad、iPhone、Android是横屏还是竖屏的代码
2014/05/11 Javascript
firefox浏览器用jquery.uploadify插件上传时报HTTP 302错误
2015/03/01 Javascript
JavaScript获得url所有参数键值表的方法
2015/03/21 Javascript
基于BootStrap的图片轮播效果展示实例代码
2016/05/23 Javascript
微信小程序 slider 详解及实例代码
2017/01/10 Javascript
原生js实现仿window10系统日历效果的实例
2017/10/31 Javascript
vue+springboot前后端分离实现单点登录跨域问题解决方法
2018/01/30 Javascript
vue组件(全局,局部,动态加载组件)
2018/09/02 Javascript
layui table 多行删除(id获取)的方法
2019/09/12 Javascript
微信小程序自定义导航栏(模板化)
2019/11/15 Javascript
Python+django实现文件上传
2016/01/17 Python
Python零基础入门学习之输入与输出
2019/04/03 Python
使用python判断jpeg图片的完整性实例
2019/06/10 Python
Python爬虫抓取技术的一些经验
2019/07/12 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
2019/09/25 Python
python的time模块和datetime模块实例解析
2019/11/29 Python
Pycharm的Available Packages为空的解决方法
2020/09/18 Python
python获取linux系统信息的三种方法
2020/10/14 Python
html+css实现自定义图片上传按钮功能
2019/09/04 HTML / CSS
发现世界上最好的珠宝设计师:JewelStreet
2017/12/17 全球购物
The Body Shop美体小铺西班牙官网:天然化妆品
2019/06/21 全球购物
工商管理专业实习大学生自我鉴定
2013/09/19 职场文书
表彰大会策划方案
2014/05/13 职场文书
公务员政审单位鉴定材料
2014/05/16 职场文书
2014年党员干部四风问题自我剖析材料
2014/09/29 职场文书
党的群众路线教育实践活动先进个人材料
2014/12/24 职场文书
幼儿园托班开学寄语(2015秋季)
2015/05/27 职场文书
mongodb清除连接和日志的正确方法分享
2021/09/15 MongoDB
PostgreSQL事务回卷实战案例详析
2022/03/25 PostgreSQL