vue实现验证码倒计时按钮
作者:莫亓 时间:2024-04-09 10:49:05
本文实例为大家分享了vue实现验证码倒计时按钮的具体代码,供大家参考,具体内容如下
1、点击“发送验证码”按钮后进行逻辑判断:
▶️ 如果邮箱已输入且格式正确:按钮变为“已发送” ,此时为不可点击状态 并开始120s倒计时;
▶️ 如果邮箱未输入或格式不正确:显示错误的提示信息。
2、120s倒计时结束后按钮变为“重新发送验证码” 。
html:
<div v-bind:class="{ 'text_email': isActive, 'text_tip': isTip }">{{tip}}</div> //出错提示
<div class="input">
<i class="ret_icon-email"></i>
<input
type="text"
v-model="email"
v-bind:class="{ 'input_email0' : hasError }"
v-on:click="cancelError"
:placeholder="输入邮箱地址"
id="inputEmail"
/>
<br />
<input type="text" placeholder="输入验证码" class="input_number" />
<button class="btn_number" v-bind:class="{gray:wait_timer>0}" @click="getCode()">
<span
class="num_green"
v-show="showNum"
v-bind:class="{num:wait_timer>0}"
>{{this.wait_timer + "s "}}</span>
<span
class="span_number"
v-bind:class="{gray_span:wait_timer>0}"
>{{ getCodeText() }}</span>
</button>
<br />
</div>
js:
data() {
return {
tip: "用Email找回密码",
isTip: false,
isActive: true,
showNum: false,
wait_timer: false,
hasError: false,
email: ""
}
},
methods: {
cancelError: function(event) {
this.hasError = false;
this.isActive = true;
this.isTip = false;
this.tip = "用Email找回密码";
},
getCode: function() {
if (this.wait_timer > 0) {
return false;
}
if (!this.email) {
this.hasError = true;
this.isActive = false;
this.isTip = true;
this.tip = "Email不能为空";
return false;
}
if (
!/^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/.test(
this.email
)
) {
this.hasError = true;
this.isActive = false;
this.isTip = true;
this.tip = "Email地址无效";
return false;
}
this.showNum = true;
this.wait_timer = 120;
var that = this;
var timer_interval = setInterval(function() {
if (that.wait_timer > 0) {
that.wait_timer--;
} else {
clearInterval(timer_interval);
}
}, 1000);
//在这里调取你获取验证码的ajax
},
getCodeText: function() {
if (this.wait_timer > 0) {
return "已发送";
}
if (this.wait_timer === 0) {
this.showNum = false;
return "重新发送验证码!";
}
if (this.wait_timer === false) {
return "发送验证码!";
}
},
}
css:
.ret_icon-email {
background: url(../../assets/pics/email.svg) no-repeat; //图片为本地图片
width: 20px;
height: 20px;
position: absolute;
top: 12px;
left: 16px;
}
.input_email0 {
border: 1px solid rgba(239, 83, 80, 1);
}
.input_number {
width: 112px;
height: 44px;
text-indent: 16px;
margin-right: 12px;
}
.btn_number {
width: 154px;
height: 44px;
border-radius: 4px;
box-sizing: border-box;
border: 1px solid rgba(76, 175, 80, 1);
line-height: 16px;
outline: none;
}
.span_number {
color: rgba(76, 175, 80, 1);
}
.btn_number.gray {
background: rgba(242, 244, 245, 1);
border: 1px solid rgba(0, 0, 0, 0.05);
}
.span_number.gray_span {
color: #9a9c9a;
}
.num_green.num {
color: rgba(76, 175, 80, 1);
}
效果图:
来源:https://blog.csdn.net/Bule_daze/article/details/98205784
标签:vue,验证码,倒计时
0
投稿
猜你喜欢
mysql5.5 master-slave(Replication)主从配置
2024-01-27 08:05:26
用PHP+java实现自动新闻滚动窗口
2023-11-22 12:31:01
Python开发网站目录扫描器的实现
2022-07-09 11:51:02
mysql存储过程 在动态SQL内获取返回值的方法详解
2024-01-19 01:22:53
Centos 安装 PHP7.4 和 Nginx的操作方法
2023-10-14 01:11:55
Tensorflow读取并输出已保存模型的权重数值方式
2023-09-15 10:07:49
Python3.6基于正则实现的计算器示例【无优化简单注释版】
2023-07-19 05:29:25
asp分段插入数据库
2010-07-02 13:13:00
Go语言开发保证并发安全实例详解
2024-02-21 10:19:48
Python实现乱序文件重新命名编号
2021-05-20 09:07:04
js 动态加载事件的几种方法总结
2024-04-22 22:24:42
Python去除字符串两端空格的方法
2023-06-14 23:15:40
python深度学习tensorflow训练好的模型进行图像分类
2023-02-20 20:40:37
解决python3插入mysql时内容带有引号的问题
2024-01-24 13:34:09
vue项目中less的一些使用小技巧
2023-07-02 16:51:33
python用pickle模块实现“增删改查”的简易功能
2022-01-13 06:38:56
Python网络编程详解
2022-01-09 15:25:10
详解Python程序与服务器连接的WSGI接口
2021-11-19 03:57:10
JS数组合并push与concat区别分析
2024-04-22 22:40:09
实例演示在SQL中启用全文检索
2011-10-01 14:01:37