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 相关文章推荐
Firefox+FireBug使JQuery的学习更加轻松愉快
Jan 01 Javascript
js操作select控件的几种方法
Jun 02 Javascript
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
Aug 14 Javascript
js浮点数精确计算(加、减、乘、除)
Dec 26 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
Jul 21 Javascript
jQuery使用$.ajax进行即时验证实例详解
Dec 11 Javascript
JS使用cookie设置样式的方法
Jun 30 Javascript
JS轮播图中缓动函数的封装
Nov 25 Javascript
微信小程序textarea层级过高(盖住其他元素)问题的解决办法
Mar 04 Javascript
vue中watch和computed为什么能监听到数据的改变以及不同之处
Dec 27 Javascript
javascript设计模式 ? 原型模式原理与应用实例分析
Apr 10 Javascript
jQuery实现朋友圈查看图片
Sep 11 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 5.0对象模型深度探索之类的静态成员
2008/03/27 PHP
PHP 高级课程笔记 面向对象
2009/06/21 PHP
php版微信小店调用api示例代码
2016/11/12 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
Mootools 1.2教程 选项卡效果(Tabs)
2009/09/15 Javascript
javascript中的对象创建 实例附注释
2011/02/08 Javascript
javascript获取鼠标位置部分的实例代码(兼容IE,FF)
2013/08/05 Javascript
js 自定义个性下拉选择框示例
2013/08/20 Javascript
javascript中bind函数的作用实例介绍
2014/09/28 Javascript
Flash图片上传组件 swfupload使用指南
2015/03/14 Javascript
基于cssSlidy.js插件实现响应式手机图片轮播效果
2016/08/30 Javascript
jQuery实现简单的tab标签页效果
2016/09/12 Javascript
有关文件上传 非ajax提交 得到后台数据问题
2016/10/12 Javascript
详解JS中的attribute属性
2017/04/25 Javascript
vue slot与传参实例代码讲解
2019/04/28 Javascript
Vue项目中使用jquery的简单方法
2019/05/16 jQuery
[03:02]生活中的Dendi之野外度假篇
2016/08/09 DOTA
[42:32]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第二场 10.28
2020/10/28 DOTA
python判断字符串是否纯数字的方法
2014/11/19 Python
python开发之tkinter实现图形随鼠标移动的方法
2015/11/11 Python
Python安装第三方库及常见问题处理方法汇总
2016/09/13 Python
django 获取字段最大值,最新的记录操作
2020/08/09 Python
Restful_framework视图组件代码实例解析
2020/11/17 Python
CSS3中border-radius属性设定圆角的使用技巧
2016/05/10 HTML / CSS
怎样实现H5+CSS3手指滑动切换图片的示例代码
2019/05/05 HTML / CSS
英国知名化妆品网站:Revolution Beauty(原TAM Beauty)
2018/02/28 全球购物
捷克街头、运动和滑板一站式商店:BoardStar.cz
2019/10/06 全球购物
一些.net面试题
2014/10/06 面试题
机械设计制造专业个人求职信
2013/09/25 职场文书
关于运动会的稿件
2014/02/02 职场文书
交通事故私了协议书
2014/04/16 职场文书
一般纳税人申请报告
2015/05/18 职场文书
2016教师学习党章心得体会
2016/01/15 职场文书
python-for x in range的用法(注意要点、细节)
2021/05/10 Python
Windows安装Anaconda3的方法及使用过程详解
2021/06/11 Python
Spring Data JPA框架自定义Repository接口
2022/04/28 Java/Android