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 AspxButton的客户端操作
Jun 26 Javascript
javascript中的void运算符语法及使用介绍
Mar 10 Javascript
JS 实现获取打开一个界面中输入的值
Mar 19 Javascript
谈谈关于JavaScript 中的 MVC 模式
Apr 11 Javascript
禁止按回车键提交表单的方法
Jun 11 Javascript
浅谈js多维数组和hash数组定义和使用
Jul 27 Javascript
JS转换HTML转义符的方法
Aug 24 Javascript
js事件冒泡与事件捕获详解
Feb 20 Javascript
JS实现调用本地摄像头功能示例
May 18 Javascript
Node.js net模块功能及事件监听用法分析
Jan 05 Javascript
Node4-5静态资源服务器实战以及优化压缩文件实例内容
Aug 29 Javascript
jQuery实现简单评论功能
Aug 19 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下判断网址是否有效的代码
2011/10/08 PHP
php中eval函数的危害与正确禁用方法
2014/06/30 PHP
php多线程实现方法及用法实例详解
2015/10/26 PHP
Yii rules常用规则示例
2016/03/15 PHP
Laravel中的chunk组块结果集处理与注意问题
2018/08/15 PHP
jquery 插件实现图片延迟加载效果代码
2010/02/06 Javascript
3Z版基于jquery的图片复选框(asp.net+jquery)
2010/04/12 Javascript
图片延迟加载的实现代码(模仿懒惰)
2013/03/29 Javascript
JS获取地址栏参数的小例子
2013/08/23 Javascript
谈谈JavaScript异步函数发展历程
2015/09/29 Javascript
实例详解jQuery Mockjax 插件模拟 Ajax 请求
2016/01/12 Javascript
cropper js基于vue的图片裁剪上传功能的实现代码
2018/03/01 Javascript
vue-cli 脚手架基于Nightwatch的端到端测试环境的过程
2018/09/30 Javascript
前后端常见的几种鉴权方式(小结)
2019/08/04 Javascript
js中调用微信的扫描二维码功能的实现代码
2020/04/11 Javascript
JavaScript实现HTML导航栏下拉菜单
2020/11/25 Javascript
[38:39]KG vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python脚本实现统计日志文件中的ip访问次数代码分享
2014/08/06 Python
在Python中处理日期和时间的基本知识点整理汇总
2015/05/22 Python
python实现RSA加密(解密)算法
2016/02/17 Python
详解Python实现多进程异步事件驱动引擎
2017/08/25 Python
Python实现感知器模型、两层神经网络
2017/12/19 Python
python如何为被装饰的函数保留元数据
2018/03/21 Python
Python解压 rar、zip、tar文件的方法
2019/11/19 Python
Python 实现日志同时输出到屏幕和文件
2020/02/19 Python
CSS3为背景图设置遮罩并解决遮罩样式继承问题
2020/06/22 HTML / CSS
英国领先的独立时装店:Van Mildert
2019/10/28 全球购物
Levi’s西班牙官方网站:李维斯,著名的牛仔裤品牌
2020/08/20 全球购物
求职信内容怎么写
2014/05/26 职场文书
医学求职自荐信
2014/06/21 职场文书
四风问题民主生活会对照检查材料思想汇报
2014/09/27 职场文书
2014年协会工作总结
2014/11/22 职场文书
2014年加油站站长工作总结
2014/12/23 职场文书
2016年“我们的节日·端午节”活动总结
2016/04/01 职场文书
Windows安装Anaconda3的方法及使用过程详解
2021/06/11 Python
浅析MySQL如何实现事务隔离
2021/06/26 MySQL