• 获取验证码倒计时


    html部分

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        <button id="getcode" value="获取验证码">获取验证码</button>
        <script type="text/javascript">
            $(function() {
                var btn = document.getElementById("getcode");
                //调用监听
                monitor($(btn));
                //点击click
                btn.onclick = function() {
                    //倒计时效果  getCode回调函数  获取验证码api
                    countDown($(this), getCode);
                };
                function getCode() {
                    alert("验证码发送成功");
                    //调用验证码接口函数
                }
            });
       </script>
    </body>
    </html>

    js部分

    function monitor(obj) {
        var LocalDelay = getLocalDelay();
        if(LocalDelay.time!=null){
            var timeLine = parseInt((new Date().getTime() - LocalDelay.time) / 1000);
            if (timeLine > LocalDelay.delay) {
                console.log("过期");
            } else {
                _delay = LocalDelay.delay - timeLine;
                obj.text(_delay+"秒后重新发送");
                document.getElementById("getcode").disabled = true;
                var timer = setInterval(function() {
                    if (_delay > 1) {
                        _delay--;
                        obj.text(_delay+"秒后重新发送");
                        setLocalDelay(_delay);
                    } else {
                        clearInterval(timer);
                        obj.text("获取验证码");
                        document.getElementById("getcode").disabled = false;
                    }
                }, 1000);
            }
        }
    };
    
    
    //倒计时效果
    /**
     *
     * @param {Object} obj 获取验证码按钮
     * @param {Function} callback  获取验证码接口函数
     */
    
    function countDown(obj, callback) {
    
        if (obj.text() == "获取验证码") {
            var _delay = 60;
            var delay = _delay;
            obj.text(_delay+"秒后重新发送");
            document.getElementById("getcode").disabled = true;
            var timer = setInterval(function() {
                if (delay > 1) {
                    delay--;
                    obj.html(delay+"秒后重新发送");
                    setLocalDelay(delay);
                } else {
                    clearInterval(timer);
                    obj.text("获取验证码");
                    document.getElementById("getcode").disabled = false;
                }
            }, 1000);
    
            callback();
        } else {
            return false;
        }
    }
    
    
           //设置setLocalDelay
           function setLocalDelay(delay) {
               //location.href作为页面的唯一标识,可能一个项目中会有很多页面需要获取验证码。
               sessionStorage.setItem("delay_" + location.href, delay);
               sessionStorage.setItem("time_" + location.href, new Date().getTime());
           }
    
           //getLocalDelay()
           function getLocalDelay() {
               var LocalDelay = {};
               LocalDelay.delay = sessionStorage.getItem("delay_" + location.href);
               LocalDelay.time = sessionStorage.getItem("time_" + location.href);
               return LocalDelay;
           }

    原文出自:https://www.cnblogs.com/shueixue/p/5776965.html

  • 相关阅读:
    用Lua编写ACM算法竞赛开灯问题
    糟糕的中文版龙书
    font and face, 浅探Emacs字体选择机制及部分记录
    栈与卡特兰数
    关于2018年东南大学Robomaster算法组工作的总结
    C++中的默认参数规则
    MySQL第三章——嵌套查询
    MySQL第三章——空值的处理
    MySQL第三章——数据更新
    MySQL第三章——连接查询
  • 原文地址:https://www.cnblogs.com/JeneryYang/p/8807792.html
Copyright © 2020-2023  润新知