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 解析xml文件
Aug 09 Javascript
javascript cookie操作类的实现代码小结附使用方法
Jun 02 Javascript
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
Dec 16 Javascript
Web打印解决方案之普通报表打印功能
Aug 29 Javascript
Javascript 事件冒泡机制详细介绍
Oct 10 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
Oct 28 Javascript
js数组去重的hash方法
Dec 22 Javascript
微信小程序开发之相册选择和拍照详解及实例代码
Feb 22 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
Apr 24 Javascript
Vue2.0基于vue-cli+webpack Vuex的用法(实例讲解)
Sep 15 Javascript
JS实现前端动态分页码代码实例
Jun 02 Javascript
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
Jan 29 jQuery
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中怎样保持SESSION不过期 原理及方案介绍
2013/08/08 PHP
收集的网上用的ajax之chat.js文件
2007/04/08 Javascript
JS中eval函数的使用示例
2013/07/21 Javascript
jQuery判断checkbox(复选框)是否被选中以及全选、反选实现代码
2014/02/21 Javascript
防止jQuery ajax Load使用缓存的方法小结
2014/02/22 Javascript
Node.js入门教程:在windows和Linux上安装配置Node.js图文教程
2014/08/14 Javascript
Javascript实现检测客户端类型代码封包
2015/12/03 Javascript
整理AngularJS框架使用过程当中的一些性能优化要点
2016/03/05 Javascript
深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
2016/04/03 Javascript
使用jQuery中的wrap()函数操作HTML元素的教程
2016/05/24 Javascript
JS实现去除数组中重复json的方法示例
2017/12/21 Javascript
vue实现的上传图片到数据库并显示到页面功能示例
2018/03/17 Javascript
利用js将ajax获取到的后台数据动态加载至网页中的方法
2018/08/08 Javascript
JS实现百度搜索框关键字推荐
2020/02/17 Javascript
ES6中的类(Class)示例详解
2020/12/09 Javascript
Python专用方法与迭代机制实例分析
2014/09/15 Python
Python实现从脚本里运行scrapy的方法
2015/04/07 Python
Python将阿拉伯数字转换为罗马数字的方法
2015/07/10 Python
Python中shape计算矩阵的方法示例
2017/04/21 Python
python的paramiko模块实现远程控制和传输示例
2017/10/13 Python
深入浅析python with语句简介
2018/04/11 Python
对python多线程中Lock()与RLock()锁详解
2019/01/11 Python
Python3中的bytes和str类型详解
2019/05/02 Python
Python调用scp向服务器上传文件示例
2019/12/22 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
2020/04/11 Python
一篇文章搞懂python的转义字符及用法
2020/09/03 Python
CSS3的calc()做响应模式布局的实现方法
2017/09/06 HTML / CSS
CSS3制作酷炫的条纹背景
2017/11/09 HTML / CSS
日本索尼音乐商店:Sony Music Shop
2018/07/17 全球购物
越南综合购物网站:Lazada越南
2019/06/10 全球购物
乌克兰巴士票购买网站:inBus
2021/03/12 全球购物
煤矿安全生产管理协议书
2016/03/22 职场文书
Django 实现jwt认证的示例
2021/04/30 Python
MySQL 百万级数据的4种查询优化方式
2021/06/07 MySQL
Redis基本数据类型哈希Hash常用操作命令
2022/06/01 Redis
利用Java连接Hadoop进行编程
2022/06/28 Java/Android