• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >vue > Vue.js实现移动端短信验证码功能

Vue.js实现移动端短信验证码功能

作者:毛毛-lucy 字体:[增加 减小] 来源:互联网 时间:2017-05-30

本文主要包含vue.js实现tab切换,vue.js,vue.js 视频教程,vue.js项目实例,vue.js教程等相关知识,毛毛-lucy 希望在学习及工作中可以帮助到您

现在的短信验证码一般为4位或6位,则页面中会相应的显示4个或6个文本框,如图所示

验证码页面示例图

当点击注册进入到输入验证码页面的时候,第一个框自动获取光标,依次输入,不可直接输入第三个或第四个框的值,

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>
</div>

第一第三行不解释,相信聪明的你可以看懂, 让我们一起看第二行,keyup是当键盘按下的时候执行的函数,ref则为传值,

data () {
  return {
   ……
   sms: {
    numbers: 4,
    msg: [],
    show: [],
    position: 0
   },
  ……
  }
 }
</div>
_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
   }
  }
</div>

如此,便可实现验证码输入功能,代码清晰,聪明的你若有疑问,随时留言,我看到后定会秒回。

以上所述是小编给大家介绍的Vue.js实现移动端短信验证码功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

</div>

您可能想查找下面的文章:

  • vue.js实现价格格式化的方法
  • Vue.js tab实现选项卡切换
  • Vue.js实现移动端短信验证码功能
  • 使用vue.js写一个tab选项卡效果
  • Vue.js组件tab实现选项卡切换
  • Vue.js实现简单动态数据处理
  • 基于Vue.js实现简单搜索框
  • Vue.js实现无限加载与分页功能开发
  • 基于Vue.js实现数字拼图游戏

相关文章

  • 2017-05-30Vuex和前端缓存的整合策略详解
  • 2017-05-30基于vue+ bootstrap实现图片上传图片展示功能
  • 2017-05-30vue.js表格组件开发的实例详解
  • 2017-05-30Vue 仿百度搜索功能实现代码
  • 2017-05-30vue.js中$watch的用法示例
  • 2017-05-30详解vue2路由vue-router配置(懒加载)
  • 2017-05-30Vue.js实现一个漂亮、灵活、可复用的提示组件示例
  • 2017-05-30Vuex之理解state的用法实例
  • 2017-05-30Vue.js 父子组件通讯开发实例
  • 2017-05-30vue-dialog的弹出层组件

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • 详解如何在Vue2中实现组件props双向绑定
    • vue.js中mint-ui框架的使用方法
    • 详解vuelidate 对于vueJs2.0的验证解决方案
    • 基于vue.js轮播组件vue-awesome-swiper实现轮播图
    • vue入门
    • 源码分析Vue.js的监听实现教程
    • 使用vuex的一点心得
    • Vue.js render方法使用详解
    • 详解Vue 普通对象数据更新与 file 对象数据更新
    • Vue原理剖析 实现双向绑定MVVM

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有