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 相关文章推荐
js 鼠标点击事件及其它捕获
Jun 04 Javascript
javascript 命名规则 变量命名规则
Feb 25 Javascript
JavaScript中实现最高效的数组乱序方法
Oct 11 Javascript
简介JavaScript中Math.LOG10E属性的使用
Jun 14 Javascript
jQuery左右滚动支持图片放大缩略图图片轮播代码分享
Aug 26 Javascript
微信小程序使用第三方库Underscore.js步骤详解
Sep 27 Javascript
React如何利用相对于根目录进行引用组件详解
Oct 09 Javascript
4 种滚动吸顶实现方式的比较
Apr 09 Javascript
原生js实现的移动端可拖动进度条插件功能详解
Aug 15 Javascript
vue实现文件上传读取及下载功能
Nov 17 Javascript
Vue学习笔记之计算属性与侦听器用法
Dec 07 Javascript
VueCli4项目配置反向代理proxy的方法步骤
May 17 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 设置MySQL连接字符集的方法
2011/01/02 PHP
php微信公众平台开发之微信群发信息
2016/09/13 PHP
thinkPHP5使用Rabc实现权限管理
2019/08/28 PHP
JavaScript中的Location地址对象
2008/01/16 Javascript
js调用AJAX时Get和post的乱码解决方法
2013/06/04 Javascript
JavaScript 数组详解
2013/10/10 Javascript
js hover 定时器(实例代码)
2013/11/12 Javascript
Javascript window对象详解
2014/11/12 Javascript
javascript使用闭包模拟对象的私有属性和方法
2016/10/05 Javascript
js控制台输出的方法(详解)
2016/11/26 Javascript
JavaScript实现打地鼠小游戏
2020/04/23 Javascript
H5基于iScroll实现下拉刷新和上拉加载更多
2017/07/18 Javascript
js案例之鼠标跟随jquery版(实例讲解)
2017/07/21 jQuery
vue实现的上传图片到数据库并显示到页面功能示例
2018/03/17 Javascript
Vue下滚动到页面底部无限加载数据的示例代码
2018/04/22 Javascript
解决vue A对象赋值给B对象,修改B属性会影响到A的问题
2018/09/25 Javascript
JavaScript实现的滚动公告特效【基于jQuery】
2019/07/10 jQuery
[01:02:45]完美世界DOTA2联赛 LBZS vs Forest 第三场 11.07
2020/11/09 DOTA
一个小示例告诉你Python语言的优雅之处
2014/07/04 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
详解python单元测试框架unittest
2018/07/02 Python
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
2019/01/05 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
2020/05/25 Python
如何更换python默认编辑器的背景色
2020/08/10 Python
聊聊python中的循环遍历
2020/09/07 Python
Django中ORM的基本使用教程
2020/12/22 Python
浅谈CSS3 动画卡顿解决方案
2019/01/02 HTML / CSS
Casadei卡萨蒂官网:意大利奢侈鞋履品牌
2017/10/28 全球购物
澳大利亚领先的在线葡萄酒零售商:Get Wines Direct
2018/03/27 全球购物
美国运动鞋类和服装零售连锁店:Shoe Palace
2019/08/13 全球购物
土木工程毕业生推荐信
2013/10/28 职场文书
党员批评与自我批评(5篇)
2014/09/23 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书
2016优秀班主任个人先进事迹材料
2016/02/26 职场文书
讲解Python实例练习逆序输出字符串
2022/05/06 Python