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);
}

效果图:

vue实现验证码倒计时按钮

来源: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
  • asp之家 网络编程 m.aspxhome.com