C# mvc js cookie 接收手机验证码并防止页面刷新后重复获取验证码

@Config.GetMobileVerifyCodeInterval 变量用来保存多久可以重新获取,写在C#的配置文件中

首先再搞几个标签

<input type="text" class="code" name="verify" id="verify" placeholder="请输入手机验证码" required maxlength="6">
<input type="button" class="obtain generate_code" value=" 获取验证码">

控制cookie的js,用来在浏览器中保持计时:

 function addCookie(name, value, expiresHours) {
        var cookieString = name + "=" + escape(value);
        //判断是否设置过期时间,0代表关闭浏览器时失效
        if (expiresHours > 0) {
            var date = new Date();
            date.setTime(date.getTime() + expiresHours * 1000);
            cookieString = cookieString + ";expires=" + date.toUTCString();
        }
        document.cookie = cookieString;
    }
    //修改cookie的值
    function editCookie(name, value, expiresHours) {
        var cookieString = name + "=" + escape(value);
        if (expiresHours > 0) {
            var date = new Date();
            date.setTime(date.getTime() + expiresHours * 1000); //单位是毫秒
            cookieString = cookieString + ";expires=" + date.toGMTString();
        }
        document.cookie = cookieString;
    }
    //根据名字获取cookie的值
    function getCookieValue(name) {
        var strCookie = document.cookie;
        var arrCookie = strCookie.split("; ");
        for (var i = 0; i < arrCookie.length; i++) {
            var arr = arrCookie[i].split("=");
            if (arr[0] == name) {
                return unescape(arr[1]);
                break;
            } else {
                return "";
                break;
            }
        }

    }
重点来了:

    $(function () {
         @if(!String.IsNullOrEmpty(ViewBag.Message))
         {
            @Html.Raw("alert('" + @ViewBag.Message + "')");
         }
        var _generate_code = $(".generate_code");
        v = getCookieValue("secondsremained");//获取cookie值
        if (v > 0) {
            settime($(".generate_code"));//开始倒计时
        }

        $(".generate_code").click(function () {
            var disabled = $(".generate_code").attr("disabled");
            if (disabled) {
                return false;
            }
            if ($("#mobile").val() == "" || isNaN($("#mobile").val()) || $("#mobile").val().length != 11) {
                alert("请填写正确的手机号!");
                return false;
            }
            $.ajax({
                async: false,
                type: "GET",
                url: "/User/SMSReg",
                data: { 
                    mobile: $("#mobile").val().trim(),
                    type:"login"
                },
                dataType: "json",
                async: false,
                success: function (data) {
                    console.log(data);
                    if (data.Result != 0)
                    { alert(data.Message); }
                    else
                    {
                        addCookie("secondsremained", @Config.GetMobileVerifyCodeInterval, @Config.GetMobileVerifyCodeInterval);
                        settime();
                    }
                },
                error: function (err) {
                    console.log(err);
                }
            });
        });
        var countdown = @Config.GetMobileVerifyCodeInterval;
        function settime() {
            countdown = getCookieValue("secondsremained");
            if (countdown == 0) {
                _generate_code.attr("disabled", false);
                _generate_code.val("获取验证码");
                countdown = @Config.GetMobileVerifyCodeInterval;
                return false;
            } else {

                $(".generate_code").attr("disabled", true);
                _generate_code.val("重新发送(" + countdown + ")");
                countdown--;
                editCookie("secondsremained", countdown, countdown + 1);
            }
            setTimeout(function () {
                settime();
            }, 1000);
        }
    })


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值