Vue实战088简单的验证码倒计时功能实现
这是个发送验证码时常用的功能,当用户点击【发送验证码】之后出现【重新获取60s后】。在倒计时期间禁止用户继续发送验证码,待倒计时结束之后才可以再次发送验证码。这个可以避免重复发送请求获取多个验证码信息(但是只有最后一次才是有效的),你也不知道自己发送了几次请求,当手机接收到验证码之后容易误以为是正确的验证码。所以做适当的控制是非常有必要的,同时也可以防止恶意发送请求消耗服务器资源。
HTML构建
为了方便这里我们用ElementUI来实现,在el-form-item中利用el-button按钮来实现验证码发送。发送验证码之后直接在el-button上修改现实中在HTML中的【发送验证码】内容,利用disabled属性来控制el-button的是否可以点击。
重新获取倒计时
定义一个retrieve()方法开启倒计时功能,利用setInterval计时器每隔一秒钟调用一次函数,当倒计时结束时通过clearInterval()来关闭计时器。这里我们需要做的是刷新时间和重定义el-button中的HTML内容,disable是用来控制el-button按钮是否可点击的属性。注意:disabled属性别用this.$refs.onConfirm.disbaled=true来定义,会报警告的:Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop"s value. Prop being mutated: "disabled"。
发送验证码
在发送之前我们需要对表单中的数据进行校验,这里为什么要嵌套两个validateField呢(validateField支持校验组数)?。因为validateField校验子表单数据时每校验一个值都会返回校验结果,当校验不通过时Error返回值为校验的提示信息,当通过时Error的值为空,所以我们在if语句中用(!Error)表示校验通过。那么这就存在一个问题如果校验数组的话就会进行多次校验,也就会发送多次验证请求。(点一次请求却收到多条验证码这显然是不合理的!)
总结:
这里主要的就是retrieve()方法的定义和动态改变HTML内容,可以利用Vue提供的$ref来快速的定位DOM元素实现属性的修改。以上内容是小编给大家分享的【Vue实战088:简单的验证码倒计时功能实现】,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。更多Vue实战技巧可以参考以下专栏:
为了方便学习,下面附上本文用到的源码: 发送验证码 retrieve(){ this.timer= 10 var that = this; console.log(that.$refs.onConfirm) var timer_interval = setInterval(function(){ if(that.timer > 0 ){ that.timer -- ; that.disable=true that.$nextTick(()=>{ that.$refs.onConfirm.$el.children[0].innerHTML= "重新获取"+that.timer+"s" }) }else{ clearInterval(timer_interval); that.$refs.onConfirm.$el.children[0].innerHTML= "重新获取" that.disable=false } },1000); } sendCode() { this.$refs.rulesForm.validateField("userid",(error)=>{ if(!error){ this.$refs.rulesForm.validateField("tel",(error)=>{ if(!error){ return new Promise((resolve, reject) => { SendCode(this.userForm).then(res=>{ if(res.data){ this.retrieve() this.phoneCode=res.data.message this.$message({ message:"验证码已发送,请注意查收!", type: "success" }) } resolve() }).catch( error => { reject(error) } ) })} }) }else{ return } }) },
JDBC中的SQL注入问题所谓的SQL注入问题意思是现在有一个SQL语句,如Selectfromloginwhereusernamexxxandpasswordxxx,其中xxx是我们需要拼接的内容,当我们
线程中的死锁问题出现此情况是因为每个对象都有线程锁,每个对象都锁了且不释放,这样所有带锁的对象就陷入了僵持状态,为了很好地演示此案例这里举一个哲学家就餐问题,模拟出现死锁问题,然后我们在解决这个问
初识线程(预备备start(),跑)今天要学习的新知识有许多,加上其他的事情也需要处理,所以今天更新的时间比往常要晚一些。文章目录1。线程简介2。创建线程的方式3。代码举例1。线程简介今天来说一说线程,这部分知识随着
初学JavaWeb,这些你弄明白了吗?一。Tomcat服务器的安装第一步准备服务器,在apache官网下载常用的服务器有Tomcatjettyjboss,初学者一半用Tomcat服务器,初学者还有可能遇到Tomcat服
贵阳标致e2008限时大促,最高优惠0。9万元手握购车款犹豫不决的你是不是还在为买车而观望,当前贵州钟裕东风标致店标致e2008直降0。9万元颜色可选,现车充足,优惠时间截止到10月29日,犹豫不决的朋友不妨到店亲身试驾一下,
入手全新4008全新5008爱车更保值要说今年上海车展上最爆款车型,无疑是东风标致上市的新法式SUV家族全新4008全新5008。全新车型一经上市就掀起了一阵新法式浪潮,吸引了大批消费者的深切关注。一方面,东风标致从中
标致5008超大乘车空间安排!5月31日,三孩生育政策正式发布,为积极应对人口老龄化,国家正式实施一对夫妻可以生育三个子女政策及配套支持措施。这意味90后肩上的责任又多了一重。上有四老下有三孩,压力大是不假。但
乐歌E2S升降桌评测居家办公神器,一个能上能下的超级办公桌在家办公忙到起飞,深入工作一整天后躺在床上才发现筋疲力尽,哎我可怜的腰和颈椎,工作是一时一刻也停不下来,但我的身体健康可怎么办呢?有没有一个两全的办法,要求很简单,坐站交替无缝衔接
SMORSS专业直播套装户外评测精工细作的全能直播套装如果说视频是精致的系统解说,那么直播更像是一场即兴表演,既可以在直播时分享好物,也能拉近和粉丝彼此之间的距离。但对于直播来说是一个看似简单,但实际上相当专业的事情,并非手机一立就能
WiFi6就在你的家中,家里的犄角旮旯也能实现全屋覆盖虽然我们无时无刻都在享受WiFi,但也无时无刻不被WiFi信号弱而困扰,即使家财万贯(千兆网速)但也免不了在厨房卫生间这类的犄角旮旯里网速翻车,信号不好。如果你的家里稍微稍微有那么
明基BL2581T可横可竖健康护眼1610黄金比例显示器写文档做PPT,汇总表格从清晨开工到夜晚下班,作为上班族的我们无时无刻不在盯着屏幕,但盯着大大小小的文字看一整天眼睛难免疲劳干涩皮肤黯淡,努力上班赚钱不就是为了让自己的生活过得好一