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 相关文章推荐
JSuggest自动匹配下拉框使用方法(示例代码)
Dec 27 Javascript
jquery 表格排序、实时搜索表格内容(附图)
May 19 Javascript
常用的jQuery前端技巧收集
Dec 24 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
Jul 13 Javascript
全面解析Bootstrap表单使用方法(表单控件)
Nov 24 Javascript
JS实现动态给标签控件添加事件的方法示例
May 13 Javascript
vue-cli 自定义指令directive 添加验证滑块示例
Oct 19 Javascript
JavaScript中join()、splice()、slice()和split()函数用法示例
Aug 24 Javascript
JS求1到任意数之间的所有质数的方法详解
May 20 Javascript
详解ES6 Promise的生命周期和创建
Aug 18 Javascript
JS document对象简单用法完整示例
Jan 14 Javascript
在antd Form表单中select设置初始值操作
Nov 02 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 无法加载mysql的module的时候的配置的解决方案引发的思考
2012/01/27 PHP
phpmyadmin3 安装配置图解教程
2012/03/29 PHP
php中文乱码怎么办如何让浏览器自动识别utf-8
2014/01/15 PHP
PHP全功能无变形图片裁剪操作类与用法示例
2017/01/10 PHP
php 截取GBK文档某个位置开始的n个字符方法
2017/03/08 PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
2019/09/30 PHP
js中的前绑定和后绑定详解
2013/08/01 Javascript
我的Node.js学习之路(二)NPM模块管理
2014/07/06 Javascript
JavaScript参数个数可变的函数举例说明
2014/10/10 Javascript
JavaSacript中charCodeAt()方法的使用详解
2015/06/05 Javascript
浅析JavaScript访问对象属性和方法及区别
2015/11/16 Javascript
Bootstrap表单组件教程详解
2016/04/26 Javascript
js停止冒泡和阻止浏览器默认行为的简单方法
2016/05/15 Javascript
AngularJs IE Compatibility 兼容老版本IE
2016/09/01 Javascript
AngularJS 自定义过滤器详解及实例代码
2016/09/14 Javascript
jQuery中$.grep() 过滤函数 数组过滤
2016/11/22 Javascript
javascript基于原型链的继承及call和apply函数用法分析
2016/12/15 Javascript
微信小程序tabbar不显示解决办法
2017/06/08 Javascript
关于vue.extend和vue.component的区别浅析
2017/08/16 Javascript
jquery 实现拖动文件上传加载进度条功能
2018/03/18 jQuery
小程序实现抽奖动画
2020/04/16 Javascript
jQuery鼠标滑过横向时间轴样式(代码详解)
2019/11/01 jQuery
[01:00:17]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第二场 1月25日
2021/03/11 DOTA
盘点提高 Python 代码效率的方法
2014/07/03 Python
python运行时间的几种方法
2016/06/17 Python
使用Python实现一个栈判断括号是否平衡
2018/08/23 Python
Python叠加两幅栅格图像的实现方法
2019/07/05 Python
python游戏开发的五个案例分享
2020/03/09 Python
Prototype如何更新局部页面
2013/03/03 面试题
大二自我鉴定范文
2013/10/05 职场文书
应聘文员自荐信范文
2014/03/11 职场文书
学生自我鉴定格式及范文
2014/09/16 职场文书
法人身份证明书
2014/10/08 职场文书
孟佩杰观后感
2015/06/17 职场文书
退货证明模板
2015/06/23 职场文书
趣味运动会通讯稿
2015/07/18 职场文书