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 键盘keyCode键码值表
Dec 24 Javascript
为超链接加上disabled后的故事
Dec 10 Javascript
jQuery学习笔记之jQuery原型属性和方法
Jun 09 Javascript
javascript中2个感叹号的用法实例详解
Sep 04 Javascript
JQuery显示、隐藏div的几种方法简明总结
Apr 16 Javascript
关于JS中match() 和 exec() 返回值和属性的测试
Mar 21 Javascript
Bootstrap项目实战之子栏目资讯内容
Apr 25 Javascript
JS正则子匹配实例分析
Dec 22 Javascript
详谈angularjs中路由页面强制更新的问题
Apr 24 Javascript
Vue-router路由判断页面未登录跳转到登录页面的实例
Oct 26 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
Apr 10 Javascript
layer.prompt使文本框为空的情况下也能点击确定的方法
Sep 24 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-accelerator网站加速PHP缓冲的方法
2008/07/30 PHP
php实现检查文章是否被百度收录
2015/01/27 PHP
php递归实现无限分类的方法
2015/07/28 PHP
PHP实现的各类hash算法长度及性能测试实例
2017/08/27 PHP
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
2011/11/21 Javascript
jquery获取tagName再进行判断
2014/05/29 Javascript
深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解
2015/03/05 Javascript
JQuery动态添加和删除表格行的方法
2015/03/09 Javascript
易操作的jQuery表单提示插件
2015/12/01 Javascript
javascript单页面手势滑屏切换原理详解
2016/03/21 Javascript
jQuery中iframe的操作(点击按钮新增窗口)
2016/04/20 Javascript
JS获取鼠标选中的文字
2016/08/10 Javascript
js仿手机页面文件下拉刷新效果
2016/10/14 Javascript
详解js界面跳转与值传递
2016/11/22 Javascript
Es6 写的文件import 起来解决方案详解
2016/12/13 Javascript
JavaScript实现汉字转换为拼音的库文件示例
2016/12/22 Javascript
vue.js学习之vue-cli定制脚手架详解
2017/07/02 Javascript
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
2018/02/08 Javascript
vue中轮训器的使用
2019/01/27 Javascript
原生JS使用Canvas实现拖拽式绘图功能
2019/06/05 Javascript
Python中对列表排序实例
2015/01/04 Python
关于反爬虫的一些简单总结
2017/12/13 Python
Python列表list排列组合操作示例
2018/12/18 Python
python3实现表白神器
2019/04/09 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
python小程序基于Jupyter实现天气查询的方法
2020/03/27 Python
使用keras实现Precise, Recall, F1-socre方式
2020/06/15 Python
浅谈HTML5 FileReader分布读取文件以及其方法简介
2017/11/09 HTML / CSS
橄榄树药房:OLIVEDA
2019/09/01 全球购物
Spotahome意大利:公寓和房间出租
2020/02/21 全球购物
保加利亚手表、香水、化妆品和珠宝购物网站:Brasty.bg
2020/04/22 全球购物
护理专业毕业生自荐信范文
2014/01/05 职场文书
战友聚会主持词
2014/04/02 职场文书
新农村建设标语
2014/06/24 职场文书
员工工作表现自我评价
2015/03/06 职场文书
法人代表资格证明书
2015/06/18 职场文书