Vue实现手机号、验证码登录(60s禁用倒计时)


Posted in Vue.js onDecember 19, 2020

 最近在做一个Vue项目,前端通过手机号、验证码登录,获取验证码按钮需要设置60s倒计时(点击一次后,一分钟内不得再次点击)。先看一下效果图:

Vue实现手机号、验证码登录(60s禁用倒计时)

输入正确格式的手机号码后,“获取验证码”按钮方可点击;点击“获取验证码”后,按钮进入60s倒计时,效果图如下:

Vue实现手机号、验证码登录(60s禁用倒计时)

Vue实现手机号、验证码登录(60s禁用倒计时)

 效果图已经有了,接下来就上代码吧!

  • html
<el-button @click="getCode()" :class="{'disabled-style':getCodeBtnDisable}" :disabled="getCodeBtnDisable">{{codeBtnWord}}</el-button>
  • 数据data
data() {
     return {
        loginForm: {
            phoneNumber: '',
            verificationCode: '',
        },
        codeBtnWord: '获取验证码', // 获取验证码按钮文字
        waitTime:61, // 获取验证码按钮失效时间
    }
}
  • 计算属性computed
computed: {
    // 用于校验手机号码格式是否正确
    phoneNumberStyle(){
        let reg = /^1[3456789]\d{9}$/
        if(!reg.test(this.loginForm.phoneNumber)){
            return false
        }
        return true
    },
    // 控制获取验证码按钮是否可点击
    getCodeBtnDisable:{
        get(){
            if(this.waitTime == 61){
                if(this.loginForm.phoneNumber){
                    return false
                }
                return true
            }
            return true
        },
        // 注意:因为计算属性本身没有set方法,不支持在方法中进行修改,而下面我要进行这个操作,所以需要手动添加
        set(){} 
    }
}

关于上面给计算属性添加set方法,可以参照//3water.com/article/202496.htm

  •  css设置不可点击时置灰
.el-button.disabled-style {
    background-color: #EEEEEE;
    color: #CCCCCC;
}
  • mothods中添加获取验证码方法
getCode(){
    if(this.phoneNumberStyle){
        let params = {}
        params.phone = this.loginForm.phoneNumber
        // 调用获取短信验证码接口
        axios.post('/sendMessage',params).then(res=>{
            res = res.data
            if(res.status==200) {
                this.$message({
                    message: '验证码已发送,请稍候...',
                    type: 'success',
                    center:true
                })
            }
        })
        // 因为下面用到了定时器,需要保存this指向
        let that = this
        that.waitTime--
        that.getCodeBtnDisable = true
        this.codeBtnWord = `${this.waitTime}s 后重新获取`
        let timer = setInterval(function(){
            if(that.waitTime>1){
                that.waitTime--
                that.codeBtnWord = `${that.waitTime}s 后重新获取`
            }else{
                clearInterval(timer)
                that.codeBtnWord = '获取验证码'
                that.getCodeBtnDisable = false
                that.waitTime = 61
            }
        },1000)
    }
}

通过上面的代码,就可以实现了,如有错误,敬请指正!

以上就是Vue实现手机号、验证码登录(60s禁用倒计时)的详细内容,更多关于vue 手机号验证码登录的资料请关注三水点靠木其它相关文章!

Vue.js 相关文章推荐
Vue3+elementui plus创建项目的方法
Dec 01 Vue.js
基于vue与element实现创建试卷相关功能(实例代码)
Dec 07 Vue.js
vuex页面刷新导致数据丢失的解决方案
Dec 10 Vue.js
vue实现两个区域滚动条同步滚动
Dec 13 Vue.js
vue使用element-ui实现表单验证
Dec 13 Vue.js
基于VUE实现简单的学生信息管理系统
Jan 13 Vue.js
vue keep-alive的简单总结
Jan 25 Vue.js
vue 根据选择的月份动态展示日期对应的星期几
Feb 06 Vue.js
Vue实现动态查询规则生成组件
May 27 Vue.js
Element-ui Layout布局(Row和Col组件)的实现
Dec 06 Vue.js
Vue如何清空对象
Mar 03 Vue.js
VUE使用draggable实现组件拖拽
Apr 06 Vue.js
Vue——前端生成二维码的示例
Dec 19 #Vue.js
如何在vue中使用kindeditor富文本编辑器
Dec 19 #Vue.js
vue 在服务器端直接修改请求的接口地址
Dec 19 #Vue.js
vue 通过base64实现图片下载功能
Dec 19 #Vue.js
Vue中computed和watch有哪些区别
Dec 19 #Vue.js
Vue与React的区别和优势对比
Dec 18 #Vue.js
Vue实现指令式动态追加小球动画组件的步骤
Dec 18 #Vue.js
You might like
第五章 php数组操作
2011/12/30 PHP
教你如何解密 “ PHP 神盾解密工具 ”
2014/06/20 PHP
php截取html字符串及自动补全html标签的方法
2015/01/15 PHP
Zend Framework框架Smarty扩展实现方法
2016/03/22 PHP
PHP 获取指定地区的天气实例代码
2017/02/08 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
2019/03/08 PHP
PHP设计模式之观察者模式定义与用法分析
2019/04/04 PHP
javascript 面向对象编程  function是方法(函数)
2009/09/17 Javascript
js window.onload 加载多个函数的方法
2009/11/02 Javascript
javascript中的绑定与解绑函数应用示例
2013/06/24 Javascript
javascript预加载图片、css、js的方法示例介绍
2013/10/14 Javascript
通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位
2014/05/05 Javascript
谈谈javascript中使用连等赋值操作带来的问题
2015/11/26 Javascript
基于JavaScript实现Tab选项卡切换效果
2016/11/24 Javascript
Node.js制作简单聊天室
2017/01/12 Javascript
详解javascript中对数据格式化的思考
2017/01/23 Javascript
前端构建工具之gulp的语法教程
2017/06/12 Javascript
vue项目优化之通过keep-alive数据缓存的方法
2017/12/11 Javascript
解决webpack+Vue引入iView找不到字体文件的问题
2018/09/28 Javascript
微信小程序中遇到的iOS兼容性问题小结
2018/11/14 Javascript
Vue CLI2升级至Vue CLI3的方法步骤
2019/05/20 Javascript
javascript实现移动端触屏拖拽功能
2020/07/29 Javascript
在Python中操作字符串之startswith()方法的使用
2015/05/20 Python
Python实现统计英文单词个数及字符串分割代码
2015/05/28 Python
python实现ID3决策树算法
2017/12/20 Python
python基于C/S模式实现聊天室功能
2019/01/09 Python
Python字典添加,删除,查询等相关操作方法详解
2020/02/07 Python
python爬虫实现获取下一页代码
2020/03/13 Python
Python加载数据的5种不同方式(收藏)
2020/11/13 Python
经理职责范文
2013/11/08 职场文书
企业标语大全
2014/07/01 职场文书
个人总结与自我评价
2015/02/14 职场文书
教务处教学工作总结
2015/08/10 职场文书
文艺部部长竞选稿
2015/11/21 职场文书
求职自我评价参考范文
2019/05/16 职场文书
HTML常用标签超详细整理
2022/03/19 HTML / CSS