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 限制输入和粘贴(IE,firefox测试通过)
Nov 14 Javascript
JS去除字符串的空格增强版(可以去除中间的空格)
Aug 26 Javascript
javascript检查表单数据是否改变的方法
Jul 30 Javascript
JavaScript—window对象使用示例
Dec 09 Javascript
AngularJS 路由详解和简单实例
Jul 28 Javascript
AngularJS路由实现页面跳转实例
Mar 03 Javascript
jQuery EasyUI之验证框validatebox实例详解
Apr 10 jQuery
想用好React的你必须要知道的一些事情
Jul 24 Javascript
使用html+js+css 实现页面轮播图效果(实例讲解)
Sep 21 Javascript
VUE+node(express)实现前后端分离
Oct 13 Javascript
vue实现tab栏点击高亮效果
Aug 19 Javascript
vue封装自定义指令之动态显示title操作(溢出显示,不溢出不显示)
Nov 12 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
使用数据库保存session的方法
2006/10/09 PHP
PHP 获取ip地址代码汇总
2015/07/05 PHP
PHP编写RESTful接口的方法
2016/02/21 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
2016/04/30 PHP
有趣的javascript数组定义方法
2010/09/10 Javascript
jquery实现增加删除行的方法
2015/02/03 Javascript
jquery实现触发时更新下拉列表内容的方法
2015/12/02 Javascript
深入解析Backbone.js框架的依赖库Underscore.js的作用
2016/05/07 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
2016/08/05 Javascript
jquery弹出框插件jquery.ui.dialog用法分析
2016/08/20 Javascript
微信小程序 progress组件详解及实例代码
2016/10/25 Javascript
jquery css实现邮箱自动补全
2016/11/14 Javascript
微信小程序 WebSocket详解及应用
2017/01/21 Javascript
JavaScript解析JSON格式数据的方法示例
2017/01/24 Javascript
Node.js笔记之process模块解读
2018/05/31 Javascript
基于Vue实现图片在指定区域内移动的思路详解
2018/11/11 Javascript
微信小程序云开发获取文件夹下所有文件(推荐)
2019/11/14 Javascript
微信小程序wxml列表渲染原理解析
2019/11/27 Javascript
Vue中keep-alive的两种应用方式
2020/07/15 Javascript
[11:01]2014DOTA2西雅图邀请赛 冷冷带你探秘威斯汀
2014/07/08 DOTA
Python生成随机密码的方法
2017/06/16 Python
django 解决manage.py migrate无效的问题
2018/05/27 Python
django框架之cookie/session的使用示例(小结)
2018/10/15 Python
django实现将修改好的新模型写入数据库
2020/03/31 Python
python 无损批量压缩图片(支持保留图片信息)的示例
2020/09/22 Python
Opencv python 图片生成视频的方法示例
2020/11/18 Python
有关HTML5 Video对象的ontimeupdate事件(Chrome上无效)的问题
2013/07/19 HTML / CSS
HTML5+CSS3应用详解
2014/02/24 HTML / CSS
澳大利亚最大的网上油画销售画廊:Direct Art Australia
2018/04/15 全球购物
英国顶级珠宝品牌之家:John Greed
2018/06/09 全球购物
人力资源经理自我评价
2014/01/04 职场文书
运动会方阵口号
2014/06/07 职场文书
同学聚会通知书
2015/04/20 职场文书
会议营销主持词
2015/07/03 职场文书
mysql 联合索引生效的条件及索引失效的条件
2021/11/20 MySQL
三种方式清除vue路由跳转router-link的历史记录
2022/04/10 Vue.js