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的构造函数和constructor属性
Jan 09 Javascript
javascript:void(0)是什么意思示例介绍
Nov 17 Javascript
用正则表达式替换图片地址img标签
Nov 22 Javascript
js jquery分别实现动态的文件上传操作按钮的添加和删除
Jan 13 Javascript
js验证框架实现代码分享
May 18 Javascript
jQuery简单实现上下,左右滑动的方法
Jun 01 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
Dec 25 Javascript
解决Extjs下拉框不显示的问题
Jun 21 Javascript
详解如何在微信小程序中愉快地使用sass
Jul 30 Javascript
vue实现的下拉框功能示例
Jan 29 Javascript
keep-alive不能缓存多层级路由菜单问题解决
Mar 10 Javascript
vue 使用async写数字动态加载效果案例
Jul 18 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
PHP定时自动生成静态HTML的实现代码
2010/06/20 PHP
在MongoDB中模拟Auto Increment的php代码
2011/03/06 PHP
destoon设置自定义搜索的方法
2014/06/21 PHP
微信公众号判断用户是否已关注php代码解析
2016/06/24 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
2013/11/14 Javascript
node.js中的fs.fsyncSync方法使用说明
2014/12/15 Javascript
JavaScript对象属性检查、增加、删除、访问操作实例
2015/07/08 Javascript
javascript基本算法汇总
2016/03/09 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
2017/03/02 Javascript
vue自定义指令的创建和使用方法实例分析
2018/12/04 Javascript
vue实现商城秒杀倒计时功能
2019/12/12 Javascript
Python中使用PIL库实现图片高斯模糊实例
2015/02/08 Python
python查找目录下指定扩展名的文件实例
2015/04/01 Python
详解Python的Flask框架中的signals信号机制
2016/06/13 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
2017/04/19 Python
python实现随机漫步算法
2018/08/27 Python
python+PyQT实现系统桌面时钟
2020/06/16 Python
Python线程池模块ThreadPoolExecutor用法分析
2018/12/28 Python
python多个模块py文件的数据共享实例
2019/01/11 Python
PyCharm使用Docker镜像搭建Python开发环境
2019/12/26 Python
keras中的History对象用法
2020/06/19 Python
python使用matplotlib的savefig保存时图片保存不完整的问题
2021/01/08 Python
葡萄牙鞋子品牌:Fair
2016/12/10 全球购物
Fox Racing官方网站:越野摩托车和山地自行车装备和服装
2019/12/23 全球购物
煤矿班组长的职责
2013/12/25 职场文书
宿舍违规用电检讨书
2014/02/16 职场文书
房地产项目建议书
2014/03/12 职场文书
教师岗位聘任书范文
2014/03/29 职场文书
《雕塑之美》教学反思
2014/04/24 职场文书
高考励志标语
2014/06/05 职场文书
警察正风肃纪剖析材料
2014/10/16 职场文书
奖学金个人总结
2015/03/04 职场文书
导游词之泉州崇武古城
2019/12/20 职场文书
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
2021/10/16 Python
利用For循环遍历Python字典的三种方法实例
2022/03/25 Python