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控制组织结构图可以任意拖拽到指定位置
Jan 17 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
May 28 Javascript
javaScript中push函数用法实例分析
Jun 08 Javascript
JS实现来回出现文字的状态栏特效代码
Oct 31 Javascript
js中利用tagname和id获取元素的方法
Jan 03 Javascript
基于javascript制作经典传统的拼图游戏
Mar 22 Javascript
关于JavaScript数组你所不知道的3件事
Aug 24 Javascript
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
Dec 15 Javascript
jQuery+css last-child实现选择最后一个子元素操作示例
Dec 10 jQuery
vue实现移动端图片上传功能
Dec 23 Javascript
jQuery实现简单聊天室
Feb 08 jQuery
Vue 的双向绑定原理与用法揭秘
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 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
2014/06/12 PHP
PHP错误和异常处理功能模块示例
2016/11/12 PHP
nodejs入门详解(多篇文章结合)
2012/03/07 NodeJs
用jquery方法操作radio使其默认选项是否
2013/09/10 Javascript
javascript中打印当前的时间实现思路及代码
2013/12/18 Javascript
jquery实现一个简单好用的弹出框
2014/09/26 Javascript
jQuery zclip插件实现跨浏览器复制功能
2015/11/02 Javascript
jquery ezUI 双击行记录弹窗查看明细的实现方法
2016/06/01 Javascript
js封装成插件_Canvas统计图插件编写实例
2017/09/12 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
2018/09/21 Javascript
微信小程序常用赋值方法小结
2019/04/30 Javascript
小程序实现长按保存图片的方法
2019/12/31 Javascript
小程序自定义导航栏兼容适配所有机型(附完整案例)
2020/04/26 Javascript
国内常用的js类库大全(CDN公共库)
2020/06/24 Javascript
[02:43]2014DOTA2国际邀请赛 官方Alliance战队纪录片
2014/07/14 DOTA
[00:35]DOTA2上海特级锦标赛 VP战队宣传片
2016/03/04 DOTA
Python中取整的几种方法小结
2017/01/06 Python
Django项目中model的数据处理以及页面交互方法
2018/05/30 Python
对pandas中Series的map函数详解
2018/07/25 Python
浅谈python多进程共享变量Value的使用tips
2019/07/16 Python
关于tensorflow softmax函数用法解析
2020/06/30 Python
CSS3用@font-face实现自定义英文字体
2013/09/23 HTML / CSS
HTML5 canvas基本绘图之绘制阴影效果
2016/06/27 HTML / CSS
Manuka Doctor英国官网:真正的麦卢卡蜂蜜和护肤品
2018/10/26 全球购物
导游的职业规划书范文
2013/12/27 职场文书
超市端午节活动方案
2014/01/23 职场文书
大二自我鉴定
2014/01/31 职场文书
毕业典礼主持词大全
2014/03/26 职场文书
《郑和远航》教学反思
2014/04/16 职场文书
工会优秀工作者事迹
2014/08/17 职场文书
2015年消费者权益日活动总结
2015/02/09 职场文书
初中家长意见
2015/06/03 职场文书
2015年大学生暑期实习报告
2015/07/13 职场文书
银行培训心得体会范文
2016/01/09 职场文书
导游词之山海关
2019/12/10 职场文书
深入理解Vue的数据响应式
2021/05/15 Vue.js