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 相关文章推荐
JSQL 基于客户端的成绩统计实现方法
May 05 Javascript
js 全兼容可高亮二级缓冲折叠菜单
Jun 04 Javascript
json对象转字符串如何实现
Dec 02 Javascript
jquery实现的一个导航滚动效果具体代码
May 27 Javascript
一系列Bootstrap导航条使用方法分享
Apr 29 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
Jun 17 Javascript
浅谈jquery之on()绑定事件和off()解除绑定事件
Oct 26 Javascript
详解Vue快速零配置的打包工具——parcel
Jan 16 Javascript
JavaScript引用类型之基本包装类型实例分析【Boolean、Number和String】
Aug 09 Javascript
layui点击按钮添加可编辑的一行方法
Aug 15 Javascript
Vue axios 将传递的json数据转为form data的例子
Oct 29 Javascript
vue单元格多列合并的实现
Nov 26 Vue.js
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
S900/ ETON E1-XM 收音机
2021/03/02 无线电
PHP通过session id 实现session共享和登录验证的代码
2012/06/03 PHP
php flush无效,IIS7下php实时输出的方法
2016/08/25 PHP
PHP获取redis里不存在的6位随机数应用示例【设置24小时过时】
2017/06/07 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
ie和firefox不兼容的解决方法集合
2009/04/28 Javascript
jQuery隔行变色与普通JS写法的对比
2013/04/21 Javascript
基于jQuery实现图片的前进与后退功能
2013/04/24 Javascript
jquery控制display属性为none或block
2014/03/31 Javascript
javascript为下拉列表动态添加数据项
2014/05/23 Javascript
node.js中的fs.readFileSync方法使用说明
2014/12/15 Javascript
JQuery boxy插件在IE中边角图片不显示问题的解决
2015/05/20 Javascript
JS出现失效的情况总结
2017/01/20 Javascript
详解AngularJS通过ocLazyLoad实现动态(懒)加载模块和依赖
2017/03/01 Javascript
解决vue打包css文件中背景图片的路径问题
2018/09/03 Javascript
Node.js模拟发起http请求从异步转同步的5种用法
2018/09/26 Javascript
vue中音频wavesurfer.js的使用方法
2020/02/20 Vue.js
python实现rest请求api示例
2014/04/22 Python
Python标准库内置函数complex介绍
2014/11/25 Python
Python编程实现二分法和牛顿迭代法求平方根代码
2017/12/04 Python
Python爬虫基础之XPath语法与lxml库的用法详解
2018/09/13 Python
python 3.6.5 安装配置方法图文教程
2018/09/18 Python
python无限生成不重复(字母,数字,字符)组合的方法
2018/12/04 Python
Python线程之定位与销毁的实现
2019/02/17 Python
Python二维码生成识别实例详解
2019/07/16 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
2020/02/10 Python
python正则表达式的懒惰匹配和贪婪匹配说明
2020/07/13 Python
Bally巴利中国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/10/09 全球购物
Java中会存在内存泄漏吗,请简单描述
2016/12/22 面试题
毕业自我鉴定
2013/11/05 职场文书
环境保护建议书
2014/08/26 职场文书
鲁滨孙漂流记读书笔记
2015/06/30 职场文书
《确定位置》教学反思
2016/02/18 职场文书
竞聘开场白方式有哪些?
2019/08/28 职场文书
解决goland 导入项目后import里的包报红问题
2021/05/06 Golang
使用Python通过企业微信应用给企业成员发消息
2022/04/18 Python