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 相关文章推荐
javascript使用activex控件的代码
Jan 27 Javascript
jQuery实现购物车多物品数量的加减+总价计算
Jun 06 Javascript
js格式化时间的方法
Dec 18 Javascript
jQuery动态加载css文件实现方法
Jun 15 Javascript
JS作为值的函数用法示例
Jun 20 Javascript
require.js配合插件text.js实现最简单的单页应用程序
Jul 12 Javascript
jquery组件WebUploader文件上传用法详解
Oct 23 Javascript
JS实现新建文件夹功能
Jun 17 Javascript
vue.js前后端数据交互之提交数据操作详解
Apr 24 Javascript
element上传组件循环引用及简单时间倒计时的实现
Oct 01 Javascript
js微信分享接口调用详解
Jul 23 Javascript
d3.js 地铁轨道交通项目实战
Nov 27 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
全国FM电台频率大全 - 26 西藏自治区
2020/03/11 无线电
打造计数器DIY三步曲(上)
2006/10/09 PHP
Symfony2学习笔记之系统路由详解
2016/03/17 PHP
PHP获取redis里不存在的6位随机数应用示例【设置24小时过时】
2017/06/07 PHP
非常有用的40款jQuery 插件推荐(系列二)
2011/12/25 Javascript
基于jquery的DIV随滚动条滚动而滚动的代码
2012/07/20 Javascript
js取消单选按钮选中并判断对象是否为空
2013/11/14 Javascript
node.js入门教程迷你书、node.js入门web应用开发完全示例
2014/04/06 Javascript
JS动态显示表格上下frame的方法
2015/03/31 Javascript
Bootstrap基础学习
2015/06/16 Javascript
学习javascript面向对象 理解javascript对象
2016/01/04 Javascript
AngularJS之依赖注入模拟实现
2016/08/19 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
2016/12/02 Javascript
通过vue-cli来学习修改Webpack多环境配置和发布问题
2017/12/22 Javascript
node.js部署之启动后台运行forever的方法
2018/05/23 Javascript
详解如何在Node.js的httpServer中接收前端发送的arraybuffer数据
2018/11/11 Javascript
JS拖拽排序插件Sortable.js用法实例分析
2019/02/20 Javascript
JS div匀速移动动画与变速移动动画代码实例
2019/03/26 Javascript
[52:03]Secret vs VG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python中利用Future对象回调别的函数示例代码
2017/09/07 Python
pandas Dataframe行列读取的实例
2018/06/08 Python
Python爬取数据保存为Json格式的代码示例
2019/04/09 Python
使用python 写一个静态服务(实战)
2019/06/28 Python
Django获取应用下的所有models的例子
2019/08/30 Python
python pycharm的安装及其使用
2019/10/11 Python
pygame实现俄罗斯方块游戏(AI篇1)
2019/10/29 Python
python发qq消息轰炸虐狗好友思路详解(完整代码)
2020/02/15 Python
Python编程快速上手——强口令检测算法案例分析
2020/02/29 Python
兰蔻美国官网:Lancome美国
2017/04/25 全球购物
廉洁使者实施方案
2014/03/29 职场文书
写求职信有哪些注意事项
2014/05/08 职场文书
2015年保洁员工作总结
2015/05/04 职场文书
工作表现证明
2015/06/15 职场文书
讲座新闻稿
2015/07/18 职场文书
SQL基础查询和LINQ集成化查询
2022/01/18 MySQL
【js设计模式】SOLID五大设计原则
2022/03/24 Javascript