springboot中郵箱驗證按鈕實現60秒后可重新獲取(可防刷新)以及防重復發送


在上一篇文章springboot注冊功能中郵箱驗證的實現中(文章鏈接:https://www.cnblogs.com/mmimo/p/13234969.html),我們已經完成了最基本的郵箱驗證功能,現在我們來完善一下它,給它增加一個60秒后才能重新發送的功能

 

這個實現並不難,我們現在先來理一下思路:當用戶點擊發送后,按鈕變成不可點擊,並且開始倒計時,當倒計時結束后,按鈕變回可點擊,並且按鈕上的文字變回“獲取驗證碼”

 

上篇文章,我們寫的html中對應的“獲取驗證碼”的按鈕的id為getcode

 

基本的實現代碼如下:

 

var count = 60;

var resend = setInterval(function(){
count--;
if (count > 0){
btn.val(count+"秒后可重新獲取");
}else {
clearInterval(resend);
btn.val("獲取驗證碼").removeAttr('disabled style');
}
}, 1000);
btn.attr('disabled',true).css('cursor','not-allowed');

 

實現效果如下:

 

可是到這里還沒有結束,因為當用戶只要刷新一下,用戶就又可以獲取驗證碼了,所以我們還要有一個防刷新的機制,因此我們可以利用cookie

 

代碼如下:

 

 /*防刷新:檢測是否存在cookie*/
        if($.cookie("captcha")){
            var count = $.cookie("captcha");
            var btn = $('#getcode');
            btn.text(count+'秒后可重新獲取').attr('disabled',true).css('cursor','not-allowed');
            var resend = setInterval(function(){
                count--;
                if (count > 0){
                    btn.val(count+'秒后可重新獲取').attr('disabled',true).css('cursor','not-allowed');
                    $.cookie("captcha", count, {path: '/', expires: (1/86400)*count});
                }else {
                    clearInterval(resend);
                    btn.val("獲取驗證碼").removeClass('disabled').removeAttr('disabled style');
                }
            }, 1000);
        }

(這代碼網絡上其他大佬已經發過了,我是模仿他們的)

 

總代碼如下:(當用戶點擊按鈕后,讓按鈕變為不可點擊;以及在頁面刷新后,先判斷cookie中有沒有存入count,有的話,將按鈕變為不可點擊)

 

$(function(){
        /*防刷新:檢測是否存在cookie*/
        if($.cookie("captcha")){// 判斷cookie存不存在
            var count = $.cookie("captcha"); // 從cookie中取出count
            var btn = $('#getcode');
            btn.text(count+'秒后可重新獲取').attr('disabled',true).css('cursor','not-allowed');
            var resend = setInterval(function(){
                count--;
                if (count > 0){
                    btn.val(count+'秒后可重新獲取').attr('disabled',true).css('cursor','not-allowed'); //把count保存到cookie中
                    $.cookie("captcha", count, {path: '/', expires: (1/86400)*count});
                }else {
                    clearInterval(resend);
                    btn.val("獲取驗證碼").removeClass('disabled').removeAttr('disabled style');
                }
            }, 1000);
        }

        /*點擊改變按鈕狀態,已經簡略掉ajax發送短信驗證的代碼*/
        $('#getcode').click(function(){

            //利用ajax發送驗證碼...(代碼已省略,上篇文章有)
           var btn = $(this);
            var count = 60;

            var resend = setInterval(function(){
                count--;
                if (count > 0){
                    btn.val(count+"秒后可重新獲取");
                    /* 將count存入cookie中 */
                    $.cookie("captcha", count, {path: '/', expires: (1/86400)*count});
                }else {
                    clearInterval(resend);
                    btn.val("獲取驗證碼").removeAttr('disabled style');
                    }
                }, 1000);
                btn.attr('disabled',true).css('cursor','not-allowed');


        });

    });

 

由此,我們的郵箱驗證功能全部完成!(看到上面重復的代碼,我們很自然會想到提取公共方法,以免代碼冗余,這個工作就交給你們啦)

接下來我會寫一個微信小程序的系列博客,小菜鳥不才,歡迎大家指正,一起加油和進步!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM