Angular6 发送手机验证码按钮倒计时效果实现方法


Posted in Javascript onJanuary 08, 2019

1.组件中定义两个变量,分别用于控制按钮是否可以点击(countDown)和按钮上的倒计时数字(countDownTime):

countDown = false;
countDowmTime = 60; // 这里设置倒计时为60S
showButtonText = '发送短信验证码'; // 可以控制动态改变的按钮提示信息

2.写一个获取短信验证码的方法绑定到页面的获取短信验证码按钮上:

getCode(event) { 
 this.validateForm1.controls['phone'].markAsDirty();           // 点击获取验证码要以输入了手机号为前提 
 this.validateForm1.controls['phone'].updateValueAndValidity();
  this.userProvider.doSendSMS ({ phone: this.validateForm1.controls.phone.value }).subscribe(res =>{   // 如果手机号验证通过
     if (res) { 
      this.notice.success('短信验证码已发送!');
      this.sendMessage();   // 调用下面的按钮倒计时的方法
 
        } 
       }); 
   }
 
sendMessage() {   // 发送了短信验证码后触发本方法,开始倒计时 
  this.countDown = true;                // 发送验证码后一分钟内,按钮变成不可点击状态 
  this.showButtonText = '验证码已发送(' +60+ 's)';           // 验证码发送后的初始状态 
  const start = setInterval(() = > { 
     if (this.countDownTime >=0 ) {
        this.showButtonText = '验证码已发送(' + this.countDownTime-- + 's)';     // 动态的进行倒计时
         } else { 
             clearInterval(start);             // 如果超时则重新发送 
             this.showButtonText = '重新发送'; 
             this.countDown = false;         // 按钮再次变成可点击状态
             this.countDownTime = 60; 
            } 
       }, 1000);
   }

3.页面上用方法中的变量来控制按钮的显示效果:

<div style="text-align:center"> 
   <button nz-button [disabled]="countDown" (click)="getCode($event)">{{showButtonText}}</button> 
..... 
</div>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Firefox/Chrome/Safari的中可直接使用$/$$函数进行调试
Feb 13 Javascript
jQuery.Validate验证库的使用介绍
Apr 26 Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
Jan 03 Javascript
详谈JavaScript的闭包及应用
Jan 17 Javascript
ES6中module模块化开发实例浅析
Apr 06 Javascript
js图片上传的封装代码
Aug 01 Javascript
解决ionic和angular上拉加载的问题
Aug 03 Javascript
Vue单页面应用保证F5强刷不清空数据的解决方案
Jan 31 Javascript
在vue中实现点击选择框阻止弹出层消失的方法
Sep 15 Javascript
详解Vue之父子组件传值
Apr 01 Javascript
ES6顶层对象、global对象实例分析
Jun 14 Javascript
ES5 模拟 ES6 的 Symbol 实现私有成员功能示例
May 06 Javascript
Angular6 用户自定义标签开发的实现方法
Jan 08 #Javascript
JS实现的获取银行卡号归属地及银行卡类型操作示例
Jan 08 #Javascript
关于微信小程序登录的那些事
Jan 08 #Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
Jan 08 #Javascript
关于React动态加载路由处理的相关问题
Jan 07 #Javascript
vue+iview 兼容IE11浏览器的实现方法
Jan 07 #Javascript
详解Vue iview IE浏览器不兼容报错(Iview Bable polyfill)
Jan 07 #Javascript
You might like
常用的php ADODB使用方法集锦
2008/03/25 PHP
PHP文件缓存类示例分享
2015/01/30 PHP
thinkPHP查询方式小结
2016/01/09 PHP
PHP函数checkdnsrr用法详解(Windows平台用法)
2016/03/21 PHP
javascript中加号(+)操作符的一些神奇作用
2014/06/06 Javascript
jQuery表格插件datatables用法总结
2014/09/05 Javascript
jQuery中:checked选择器用法实例
2015/01/04 Javascript
DOM基础教程之使用DOM + Css
2015/01/20 Javascript
获取jqGrid中选择的行的数据
2016/11/30 Javascript
微信小程序通过api接口将json数据展现到小程序示例
2017/01/20 Javascript
基于JS实现仿百度百家主页的轮播图效果
2017/03/06 Javascript
JS正则获取HTML元素的方法
2017/03/31 Javascript
Three.js基础学习之场景对象
2017/09/27 Javascript
vue中简单弹框dialog的实现方法
2018/02/26 Javascript
微信小程序中使用Async-await方法异步请求变为同步请求方法
2019/03/28 Javascript
vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
2019/08/03 Javascript
如何实现vue的tree组件
2020/12/03 Vue.js
在Python中使用dict和set方法的教程
2015/04/27 Python
python中循环语句while用法实例
2015/05/16 Python
Python实现信用卡系统(支持购物、转账、存取钱)
2016/06/24 Python
Python基于scapy实现修改IP发送请求的方法示例
2017/07/08 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
2018/01/30 Python
python kmeans聚类简单介绍和实现代码
2018/02/23 Python
python图书管理系统
2020/04/05 Python
Python使用Django实现博客系统完整版
2020/09/29 Python
wxPython实现分隔窗口
2019/11/19 Python
利用python实现逐步回归
2020/02/24 Python
使用Python解析Chrome浏览器书签的示例
2020/11/13 Python
使用CSS3制作倾斜导航条和毛玻璃效果
2017/09/12 HTML / CSS
普通大学毕业生自荐信
2013/11/04 职场文书
国贸专业求职信
2014/06/28 职场文书
关于读书的演讲稿500字
2014/08/27 职场文书
初中中等生评语
2014/12/29 职场文书
2015年艾滋病宣传活动总结
2015/03/27 职场文书
圣贤教育改变命运观后感
2015/06/16 职场文书
Redis缓存-序列化对象存储乱码问题的解决
2021/06/21 Redis