网站中为了防止恶意获取验证短信、验证邮箱,都会在点击获取验证码的按钮上做个倒计时的效果。比如:做注册页面时会有获取验证码按钮,点击后过60秒才能重新获取,数字是递减的到0时重新回到最初的状态。实现这个功能只需要一个setInterval和一个clearInterval就能搞定了,不需要太多的代码。
1.jquery的实现:
/**
 * 倒计时
 * e 代表发送按钮对象
 */
function resetTime(e){
    var second = 60;
    var timer = null;
    timer = setInterval(function(){
        second -= 1;
        if(second >0){
            $(e).attr('disabled',true);
            $(e).text(second + "秒后获取验证码");
        }else{
            clearInterval(timer);
            $(e).attr('disabled',false);
            $(e).text("发送短信验证码");
        }
    },1000);
}2、在vue实现倒计时获取验证码效果:
这里我们没有使用setInterval,而使用setTimeout,每1秒钟递归来实现的。注意区别:
<template>
 <div>
  <el-button :disabled="disabled" @click="sendcode" class="sendcode">{{btntxt}}</el-button>
 </div>
</template>
<script>
 export default {
  data() {
   return {
    disabled: false,
    time: 5,
    btntxt: "发送验证码",
   };
  },
  methods: {
   sendcode() {
    this.time = 5;
    this.timer();
   },
   //发送手机验证码倒计时
   timer() {
    if (this.time > 0) {
     this.disabled = true;
     this.time--;
     this.btntxt = this.time + "秒";
     setTimeout(this.timer, 1000);
    } else {
     this.time = 0;
     this.btntxt = "发送验证码";
     this.disabled = false;
    }
   },
  }
 }
</script>
<style scoped>
 .el-button {
  margin: 100px 50px;
 }
</style>本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!
在传统的 Web 开发过程中,处理图形验证码很简单,只需要在后台用随机字符串生成一个图片,将验证码内容放进 Session 即可,用户提交表单时从 Session[1] 取出判断即可。
用于一些注册类的场景,点击发送验证码,xx秒后重新发送。利用 setTimeout 方法,xx秒后执行指定的方法,修改button的属性值,disabled为true时为灰色,不可点击。
在这里讲一讲这个案例的实现思路吧(个人见解)。。核心思想:为防止页面刷新时倒计时失效的解决方案是:当每次刷新一次页面时都执行一个函数 即下面讲到的 setStyle() 函数。这个函数会根据当前的 cookie 值判断 是否处于倒计时阶段
细心的同学可以发现,现在很多网站当登录多次之后就会出现一个图形验证码,或是当提交表单、或点击获取手机验证码等等场景都会有图形验证码的出现。那么图形验证码是为了解决什么问题而出现的呢?
最近接的新项目,登录注册页根据需求要使用手机号获取验证码登录或者注册,一开始的想法是要做6个inputshur输入框,但是光标问题太严重。在网上看别人的实现方法,发现可以用一个input+6个span或者6个div来做,经过构思
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!