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 插件 任意位置浮动固定层
Dec 25 Javascript
jquery load事件(callback/data)使用方法及注意事项
Feb 06 Javascript
JS中类或对象的定义说明
Mar 10 Javascript
javascript移出节点removeChild()使用介绍
Apr 03 Javascript
js函数参数设置默认值的一种变通实现方法
May 26 Javascript
Node.js(安装,启动,测试)
Jun 09 Javascript
jQuery实现table隔行换色和鼠标经过变色的两种方法
Jun 15 Javascript
Bootstrap和Java分页实例第二篇
Dec 23 Javascript
js实现华丽的九九乘法表效果
Mar 29 Javascript
浅谈vue后台管理系统权限控制思考与实践
Dec 19 Javascript
微信小程序Echarts覆盖正常组件问题解决
Jul 13 Javascript
微信小程序实现签字功能
Dec 23 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学习笔记 面向对象中[接口]与[多态性]的应用
2011/06/16 PHP
使用PHP静态变量当缓存的方法
2013/11/13 PHP
ThinkPHP有变量的where条件分页实例
2014/11/03 PHP
Laravel5.1框架路由分组用法实例分析
2020/01/04 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
jquery 元素相对定位代码
2010/10/15 Javascript
js 手机号码合法性验证代码集合
2012/09/29 Javascript
IE 下Enter提交表单存在重复提交问题的解决方法
2014/05/04 Javascript
Javascript学习笔记之 函数篇(二) : this 的工作机制
2014/06/24 Javascript
javascript将url中的参数加密解密代码
2014/11/17 Javascript
详解javascript高级定时器
2015/12/31 Javascript
使用Node.js处理前端代码文件的编码问题
2016/02/16 Javascript
浅谈javascript中的call、apply、bind
2016/03/06 Javascript
浅谈JavaScript 执行环境、作用域及垃圾回收
2016/05/31 Javascript
layer子层给父层页面元素赋值,以达到向父层页面传值的效果实例
2017/09/22 Javascript
简单说说angular.json文件的使用
2018/10/29 Javascript
使用nodejs分离html文件里的js和css详解
2019/04/12 NodeJs
vue动态配置模板 'component is'代码
2019/07/04 Javascript
javascript中的this作用域详解
2019/07/15 Javascript
Vue2.4+新增属性.sync、$attrs、$listeners的具体使用
2020/03/08 Javascript
django 实现电子支付功能的示例代码
2018/07/25 Python
python实现彩票系统
2020/06/28 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
2019/01/22 Python
用Python获取摄像头并实时控制人脸的实现示例
2019/07/11 Python
django执行数据库查询之后实现返回的结果集转json
2020/03/31 Python
如何用用Python将地址标记在地图上
2021/02/07 Python
速卖通欧盟:Aliexpress EU
2020/08/19 全球购物
2014年道德讲堂实施方案
2014/03/05 职场文书
四风问题查摆材料
2014/08/25 职场文书
2014年前台文员工作总结
2014/12/08 职场文书
英语教师个人总结
2015/02/09 职场文书
银行保安拾金不昧表扬稿
2015/05/05 职场文书
互联网的下一个风口:新的独角兽将诞生
2019/08/02 职场文书
如何利用STAR法则制作留学文书?
2019/08/26 职场文书
详解Mysql和Oracle之间的误区
2021/05/18 MySQL
如何解决php-fpm启动不了问题
2021/11/17 PHP