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 相关文章推荐
jQuery实现的类flash菜单效果代码
May 17 Javascript
firefox火狐浏览器与与ie兼容的2个问题总结
Jul 20 Javascript
jquery ready函数、css函数及text()使用示例
Sep 27 Javascript
jquery遍历筛选数组的几种方法和遍历解析json对象
Dec 13 Javascript
javascript数组操作(创建、元素删除、数组的拷贝)
Apr 07 Javascript
javascript类型转换示例
Apr 29 Javascript
js的Prototype属性解释及常用方法
May 08 Javascript
Javascript基础教程之数据类型 (布尔型 Boolean)
Jan 18 Javascript
javascript判断变量是否有值的方法
Apr 20 Javascript
解决微信内置浏览器返回上一页强制刷新问题方法
Feb 05 Javascript
js 作用域和变量详解
Feb 16 Javascript
layui上传图片到服务器的非项目目录下的方法
Sep 26 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 使用GD库为页面增加水印示例代码
2014/03/24 PHP
php+ajax实时刷新简单实例
2015/02/25 PHP
ThinkPHP中数据操作案例分析
2015/09/27 PHP
PHP模拟http请求的方法详解
2016/11/09 PHP
javascript 短路法代码精简
2009/08/20 Javascript
Javascript 设计模式(二) 闭包
2010/05/26 Javascript
面向对象的Javascript之二(接口实现介绍)
2012/01/27 Javascript
javascript获取重复次数最多的字符
2015/07/08 Javascript
javascript学习指南之回调问题
2016/04/23 Javascript
详解AngularJs中$sce与$sceDelegate上下文转义服务
2016/09/21 Javascript
判断颜色是否合法的正则表达式(详解)
2017/05/03 Javascript
微信小程序BindTap快速连续点击目标页面跳转多次问题处理
2019/04/08 Javascript
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
[02:49]2014DOTA2电竞也是体育项目! 势要把荣誉带回中国!
2014/07/20 DOTA
[01:14]DOTA2 7.22版本新增神杖效果展示(智力英雄篇)
2019/05/29 DOTA
[01:02:26]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第二场 1月18日
2021/03/11 DOTA
使用Python的web.py框架实现类似Django的ORM查询的教程
2015/05/02 Python
Python判断文本中消息重复次数的方法
2016/04/27 Python
python 遍历列表提取下标和值的实例
2018/12/25 Python
pyinstaller参数介绍以及总结详解
2019/07/12 Python
Python实现微信小程序支付功能
2019/07/25 Python
Python实现图片添加文字
2019/11/26 Python
pytorch dataloader 取batch_size时候出现bug的解决方式
2020/02/20 Python
Python如何使用27行代码绘制星星图
2020/07/20 Python
data:image data url 文件转为Blob上传后端的方法
2019/07/16 HTML / CSS
美国高级音响品牌:Master&Dynamic
2018/07/05 全球购物
美国电子产品主要品牌的授权在线零售商:DataVision
2019/03/23 全球购物
实习期自我鉴定
2013/10/11 职场文书
英文版区域经理求职信
2013/10/23 职场文书
文秘专业毕业生就业推荐信
2013/11/08 职场文书
公司中层干部的自我评价分享
2014/03/01 职场文书
学生通报表扬范文
2015/05/04 职场文书
六一儿童节新闻稿
2015/07/17 职场文书
2016年感恩父亲节活动总结
2016/04/01 职场文书
《卧薪尝胆》读后感3篇
2019/12/26 职场文书
PyQt5 显示超清高分辨率图片的方法
2021/04/11 Python