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 相关文章推荐
JavaScript读取中文cookie时的乱码问题的解决方法
Oct 14 Javascript
javascript 仿QQ滑动菜单效果代码
Sep 03 Javascript
jQuery获得指定元素坐标的方法
Apr 14 Javascript
快速学习AngularJs HTTP响应拦截器
Dec 31 Javascript
使用jQuery操作HTML的table表格的实例解析
Mar 13 Javascript
js判断主流浏览器类型和版本号的简单实现代码
May 26 Javascript
AngularJS中的按需加载ocLazyLoad示例
Jan 11 Javascript
微信小程序 scroll-view隐藏滚动条详解
Jan 16 Javascript
JavaScript之json_动力节点Java学院整理
Jun 29 Javascript
微信小程序实现长按删除图片的示例
May 18 Javascript
vue.js 中使用(...)运算符报错的解决方法
Aug 09 Javascript
selenium+java中用js来完成日期的修改
Oct 31 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
使用php4加速网络传输
2006/10/09 PHP
php 将excel导入mysql
2009/11/09 PHP
PHP 截取字符串专题集合
2010/08/19 PHP
实用的简单PHP分页集合包括使用方法
2013/10/21 PHP
详解Window7 下开发php扩展
2015/12/31 PHP
php魔术方法功能与用法实例分析
2016/10/19 PHP
基于PHP实现的多元线性回归模拟曲线算法
2018/01/30 PHP
PHP实现动态添加XML中数据的方法
2018/03/30 PHP
js 事件处理函数间的Event物件是否全等
2011/04/08 Javascript
将两个div左右并列显示并实现点击标题切换内容
2013/10/22 Javascript
jQuery模拟黑客帝国矩阵效果实例
2015/06/28 Javascript
javascript针对cookie的基本操作实例详解
2015/11/30 Javascript
JS实现的在线调色板实例(附demo源码下载)
2016/03/01 Javascript
VUEJS实战之构建基础并渲染出列表(1)
2016/06/13 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
2016/07/28 Javascript
浅谈Node.js:fs文件系统模块
2016/12/08 Javascript
vue2.0 中#$emit,$on的使用详解
2017/06/07 Javascript
JS switch判断 三目运算 while 及 属性操作代码
2017/09/03 Javascript
基于Vue过渡状态实例讲解
2017/09/14 Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
2017/09/28 Javascript
vue-cli webpack 引入jquery的方法
2018/01/10 jQuery
使用JS判断移动端手机横竖屏状态
2018/07/30 Javascript
动态创建类实例代码
2009/10/07 Python
Python实现的使用telnet登陆聊天室实例
2015/06/17 Python
TensorFlow实现MLP多层感知机模型
2018/03/09 Python
Python爬虫实战之12306抢票开源
2019/01/24 Python
Python DataFrame一列拆成多列以及一行拆成多行
2019/08/06 Python
Python利用全连接神经网络求解MNIST问题详解
2020/01/14 Python
python操作微信自动发消息的实现(微信聊天机器人)
2020/07/14 Python
CSS3中使用RGBA设置透明度的示例
2015/08/04 HTML / CSS
流行文化收藏品:Sideshow(DC漫画,星球大战,漫威)
2019/03/17 全球购物
安全检查管理制度
2014/02/02 职场文书
园林技术个人的自我评价
2014/02/15 职场文书
小学校园之星事迹材料
2014/05/16 职场文书
男方家长婚礼致辞
2015/07/27 职场文书
Mysql数据库值的添加、修改、删除及清空操作实例
2021/06/20 MySQL