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 相关文章推荐
jquery根据name属性查找的小例子
Nov 21 Javascript
使用Chrome调试JavaScript的断点设置和调试技巧
Dec 16 Javascript
JSON与String互转的实现方法(Javascript)
Sep 27 Javascript
详解jQuery事件
Jan 13 Javascript
angularjs中的$eval方法详解
Apr 24 Javascript
详解Vue爬坑之vuex初识
Jun 14 Javascript
JavaScript标准对象_动力节点Java学院整理
Jun 27 Javascript
JS实现的JSON数组去重算法示例
Apr 11 Javascript
对VUE中的对象添加属性
Sep 18 Javascript
Node.js API详解之 string_decoder用法实例分析
Apr 29 Javascript
layui使用及简单的三级联动实现教程
Dec 01 Javascript
Vite + React从零开始搭建一个开源组件库
Jun 25 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
现磨咖啡骗局!现磨咖啡=新鲜咖啡?现磨咖啡背后的猫腻你不懂!
2019/03/28 冲泡冲煮
第六节 访问属性和方法 [6]
2006/10/09 PHP
phpmyadmin操作流程
2006/10/09 PHP
PHP程序员面试 切忌急功近利(更需要注重以后的发展)
2010/09/01 PHP
解析php常用image图像函数集
2013/06/24 PHP
PHP利用header跳转失效的解决方法
2014/10/24 PHP
ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整
2014/11/05 PHP
学习php设计模式 php实现原型模式(prototype)
2015/12/07 PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
2017/10/19 PHP
解析URI与URL之间的区别与联系
2013/11/22 Javascript
jQuery队列操作方法实例
2014/06/11 Javascript
JavaScript中的call方法和apply方法使用对比
2015/08/12 Javascript
Ajax的概述与实现过程
2016/11/18 Javascript
vue组件从开发到发布的实现步骤
2018/11/11 Javascript
稍微学一下Vue的数据响应式(Vue2及Vue3区别)
2019/11/21 Javascript
vue实现移动端H5数字键盘组件使用详解
2020/08/25 Javascript
OpenLayers实现图层切换控件
2020/09/25 Javascript
[08:54]《一刀刀一天》之DOTA全时刻18:十九支奔赴西雅图队伍全部出炉
2014/06/04 DOTA
Python中对列表排序实例
2015/01/04 Python
Python解析xml中dom元素的方法
2015/03/12 Python
python检测某个变量是否有定义的方法
2015/05/20 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
2018/12/26 Python
Python networkx包的实现
2020/02/14 Python
HTML5中的nav标签学习笔记
2016/06/24 HTML / CSS
美国家用和厨房电器销售网站:Appliances Connection
2020/01/24 全球购物
测试工程师程序员求职信范文
2014/02/20 职场文书
《春晓》教学反思
2014/04/20 职场文书
单位承诺书格式
2014/05/21 职场文书
青年教师师德演讲稿
2014/08/26 职场文书
廉政文化进校园广播稿
2014/10/20 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
护士节慰问信
2015/02/15 职场文书
居住证明范文
2015/06/17 职场文书
评估“风险”创业计划的几大要点
2019/08/12 职场文书
MySQL系列之八 MySQL服务器变量
2021/07/02 MySQL