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 相关文章推荐
关于IFRAME 自适应高度的研究
Jul 20 Javascript
BOM与DOM的区别分析
Oct 26 Javascript
深入理解Javascript闭包 新手版
Dec 28 Javascript
jquery 使用点滴函数代码
May 20 Javascript
js获取鼠标点击的位置实现思路及代码
May 09 Javascript
浅析jquery数组删除指定元素的方法:grep()
May 19 Javascript
Javascript将数字转化成为货币格式字符串
Jun 22 Javascript
微信小程序教程系列之视图层的条件渲染(10)
Apr 19 Javascript
深入浅析Vue中的slots/scoped slots
Apr 03 Javascript
Vue中保存数据到磁盘文件的方法
Sep 06 Javascript
浅谈ng-zorro使用心得
Dec 03 Javascript
深入解析vue 源码目录及构建过程分析
Apr 24 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
自定义session存储机制避免会话保持问题
2014/10/08 PHP
Yii2.0高级框架数据库增删改查的一些操作
2015/11/16 PHP
JavaScript获取GridView中用户点击控件的行号,列号
2009/04/14 Javascript
多浏览器兼容性比较好的复制到剪贴板的js代码
2011/10/09 Javascript
原生js操作checkbox用document.getElementById实现
2013/10/12 Javascript
jquery判断元素是否隐藏的多种方法
2014/05/06 Javascript
JavaScript实现动态删除列表框值的方法
2015/08/12 Javascript
jQuery代码性能优化的10种方法
2016/06/21 Javascript
jQuery实现在新增加的元素上添加事件方法案例分析
2017/02/09 Javascript
vue 实现 tomato timer(蕃茄钟)实例讲解
2017/07/24 Javascript
jQuery实现动画、消失、显现、渐出、渐入效果示例
2018/09/06 jQuery
vue 项目中当访问路由不存在的时候默认访问404页面操作
2020/08/31 Javascript
tornado框架blog模块分析与使用
2013/11/21 Python
老生常谈Python序列化和反序列化
2017/06/28 Python
Python初学时购物车程序练习实例(推荐)
2017/08/08 Python
Python实现FTP弱口令扫描器的方法示例
2019/01/31 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
2019/04/04 Python
python实现Excel文件转换为TXT文件
2019/04/28 Python
python 调整图片亮度的示例
2020/12/03 Python
python解包用法详解
2021/02/17 Python
使用HTML5原生对话框元素并轻松创建模态框组件
2019/03/06 HTML / CSS
HTML5 body设置全屏背景图片的示例代码
2020/12/08 HTML / CSS
Hotels.com台湾:饭店订房网
2017/09/06 全球购物
Sephora丝芙兰马来西亚官方网站:国际化妆品购物
2018/03/15 全球购物
高中自我鉴定范文
2013/11/03 职场文书
演讲稿开场白
2014/01/13 职场文书
幼儿园大班新学期寄语
2014/01/18 职场文书
一年级语文教学反思
2014/02/13 职场文书
三月学雷锋活动总结
2014/06/26 职场文书
公司活动总结范文
2014/07/01 职场文书
2014年计划生育协会工作总结
2014/11/14 职场文书
2014年实习生工作总结
2014/11/27 职场文书
学校实习推荐信
2015/03/27 职场文书
导游词之南迦巴瓦峰
2019/11/19 职场文书
Nginx location 和 proxy_pass路径配置问题小结
2021/09/04 Servers
PyCharm 配置SSH和SFTP连接远程服务器
2022/05/11 Python