登录验证码倒计时优化 页面刷新实时倒计时_注册页面短信验证码按钮置灰并倒计时60-程序员宅基地

技术标签: vue  

源:https://www.cnblogs.com/HDou/p/5553424.html

现在很多页面是需要获取验证码的,但是相信很多页面是没有做这样的优化的,比如下面这个场景:

现在访问一个注册页面,页面有一个填写手机号,获取验证码的按钮,点击获取验证码按钮之后,按钮变成灰色,然后是60倒计时效果。在60S内我无法再次点击获取验证码按钮。因为按钮是灰色的,不可点击状态。

但是,如果在倒计时进行时我刷新一下页面,一般的页面就会全部刷新,包括倒计时效果也没有了,按钮恢复到最初可点击状态,这其实是不符合逻辑的。按正常逻辑是,页面仍然倒计时,如果我刷新页面,倒计时依然存在,并且按钮不可点击。

再有一种场景:如果在倒计时任然进行时,我关闭了页面,然后在60S内重新打开页面,按道理说60s时间还没有过完,我重新打开页面,倒计时效果应该依然存在,并且与实际流逝时间对应,也就是说,我点击按钮,倒计时进行到50s的时候,我关闭页面,然后过去40s之后我重新打开页面,倒计时效果应该进行至10s。

但是,现有很多页面是没有实现这样的逻辑的。也就是说页面刷新,倒计时就没有了,按钮又恢复了,自然是不合理不符合逻辑的,针对这样的问题我的解决方案如下。

1.点击获取验证码按钮,改变按钮为不可点击状态,进行倒计时计时器,并且实时记录倒计时秒数,以及当前时间time1。

2.页面刷新的时候监听倒计时按钮,获取倒计时秒数,以及页面关闭的时的时间time1,和当前时间time2。

3.如果当前时间与关闭页面的时间的差 小于关闭页面的倒计时秒数,倒计时任然再进行,修改按钮为倒计时样式。

<input class="phone" type="number" placeholder="验证码" v-model="loginForm.verification">
<button class="close_tel" v-show="show" @click="getCode">获取验证码</button>
<button class="close_tel2" v-show="!show">重新获取({
   {count}}s)</button>
            
const TIME_COUNT = 30
if (!this.timer) { // timer: null // 该变量是用来记录定时器的,防止点击的时候触发多个setInterval
 this.count = TIME_COUNT
 this.show = false
 this.checkTel()
 this.timer = setInterval(() => {
   if (this.count > 0 && this.count <= TIME_COUNT) {
     this.count--
   } else {
     this.show = true
     clearInterval(this.timer)
     this.timer = null
   }
 }, 1000)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/fengtingYan/article/details/88802757

智能推荐

如何实现一个简单的FSM有限状态机-程序员宅基地

文章浏览阅读727次,点赞20次,收藏18次。在游戏开发中,有限状态机(Finite State Machine,FSM)是一种强大的设计模式,用于描述对象在不同状态下的行为以及状态之间的转换,对于有限的状态,每个状态有自己独立的实现逻辑和过渡逻辑,每个状态可以切换至零-多个状态。通过描述对象在不同状态下的行为以及状态之间的转换,为游戏开发者提供了一种清晰而有效的方式来管理复杂的游戏逻辑。有限状态机是一种数学模型,用于描述一个系统在不同状态之间的转换。在游戏开发中,这个系统可以是任何具有多种行为的实体,比如角色、敌人、NPC等。

基于Java+Spring Boot+MySQL的足球青训俱乐部管理后台系统的设计与开发-程序员宅基地

文章浏览阅读685次,点赞26次,收藏14次。随着社会经济的快速发展,人们对足球俱乐部的需求日益增加,加快了足球健身俱乐部的发展,足球俱乐部管理工作日益繁忙,传统的管理方式已经无法满足足球俱乐部管理需求,因此,为了提高足球俱乐部管理效率,足球俱乐部管理后台系统应运而生。本文重点阐述了足球青训俱乐部管理后台系统的开发过程,以实际运用为开发背景,基于框架,运用了Java技术和MYSQL数据库进行开发设计,充分保证系统的安全性和稳定性。

SpringBoot整合Swagger3.0_io.swagger.v3.oas.annotations.media.schema-程序员宅基地

文章浏览阅读1.3k次。controller层,用@Tag注解描述这个controller类的具体功能,然后@Operation注解描述某个方法的具体功能,@Parameters用来记录方法中需要的参数,每个参数的含义。启动项目,访问http://localhost:8080/documentation/swagger-ui/index.html。我们配置Security的配置类,来解除对接口文档访问的拦截。在dto类里面,使用schema来描述类的信息和类的属性。重启项目,然后重新访问接口文档,发现被拦截了。_io.swagger.v3.oas.annotations.media.schema

发布订阅模式的代码实现_发布订阅源码-程序员宅基地

文章浏览阅读80次。【代码】发布订阅模式的代码实现。_发布订阅源码

c++创造一个链表_c++创建链表-程序员宅基地

文章浏览阅读731次。刚入门数据结构,尝试一下自己写一个链表_c++创建链表

【JAVA核心知识】22:从源码看ReentrantLock的Condition_reentrantlock newcondition-程序员宅基地

文章浏览阅读665次。在[22-F.1:Condition的简单使用]中介绍了Condition的简单使用及常用方法,Condition在JDK 1.5引入与ReentrantLock结合使用可以对线程进行主动控制,相较于Object的wait(),notify()方法,Condition具有更全面的功能。_reentrantlock newcondition

随便推点

Part V.S3. 区间直觉模糊信息下的VIKOR方法_模糊vikor-程序员宅基地

文章浏览阅读331次。3.1 基于模糊熵的区间直觉模糊VIKOR方法3.1.1 问题描述  设某多属性决策问题有mmm个方案Yi(i=1,2,⋯ ,m)Y_{i}\left(i=1,2,\cdots,m\right)Yi​(i=1,2,⋯,m),组成方案集Y=(Y1,Y2,⋯ ,Ym)Y=\left(Y_{1},Y_{2},\cdots,Y_{m}\right)Y=(Y1​,Y2​,⋯,Ym​),评价每个方案的属性(或指标)为Gj(j=1,2,⋯ ,n)G_{j}\left(j=1,2,\cdots,n\right)Gj​(_模糊vikor

ITSS项目经理项目经理 信息技术应用创新领域-信创运维 介绍_itss认证 项目经理与应用经理-程序员宅基地

文章浏览阅读547次。信息技术应用创新领域“IT服务工程师”和“IT服务项目经理”是依据现行标准,结合当前我国信息技术应用创新(以下简称“信创”)领域的发展方向及人员技能需求,中国电子技术标准化研究院推出ITSS系列:由中国电子技术标准化研究院软件应用与服务研究中心组织开展ITSS系列 信息技术应用创新领域培训。现相关内容如下:一、ITSS系列培训的价值ITSS能提高企事业单位的IT服务管理水平,规范IT服务的行为,降低IT运营的风险,提升个人及单位在信创领域的业务水平和服务能力。通过培训,可以:l 培养从业人员_itss认证 项目经理与应用经理

阿里云maven仓库地址_阿里云仓库-程序员宅基地

文章浏览阅读3.3w次,点赞4次,收藏7次。阿里云最新maven仓库地址:https://maven.aliyun.com/mvn/view&lt;mirror&gt;&lt;id&gt;AliRepo-aliyun&lt;/id&gt;&lt;mirrorOf&gt;*&lt;/mirrorOf&gt;&lt;name&gt;Mirror Name for the Alirepo.&lt;/name&gt;&lt;u_阿里云仓库

Spring Boot 以json格式返回date时显示数据比实际数据少一天(少8小时)_springboot返回的数据总是少8-程序员宅基地

文章浏览阅读1.8k次。解决办法:1.当然你可以简单直接的在后端把Date类型转成String,非常的简单粗暴2.这是由于SpringBoot中对于@RestController或者@Controller+@ResponseBody注解接口默认返回的是Json数据,而SpringBoot默认的是Jackson框架转换,而Jackson默认的时间时区是GMT,对于中国时间少8个小时所以,我们可以在ap..._springboot返回的数据总是少8

Android Studio报错——The application could not be installed: INSTALL_FAILED_USER_RESTRICTED的解决-程序员宅基地

文章浏览阅读1.3w次。在使用Android Studio进行USB调试的时候,出现如下错误:Session 'app': Installation did not succeed. The application could not be installed: INSTALL_FAILED_USER_RESTRICTED这种情况一般是由于被调试手机拒绝安装app的请求。解决方法我是用的手机系统是MIU..._the application could not be installed: install_failed_user_restricted

MATLAB提取多个S参数文件的相同分量_matlab读取s2p-程序员宅基地

文章浏览阅读1.9k次。批量提取多个S参数文件的相同分量_matlab读取s2p