基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)

让我们来详细讲解一下“基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)”的完整攻略。

一、技术栈

在本文中,我们会用到以下几种技术:

  • HTML:用来构建页面结构
  • CSS:用来美化页面样式
  • jQuery:用来操作页面元素和实现倒计时功能

二、实现步骤

1. 编写HTML页面结构

首先,我们需要编写一个HTML页面结构,以便于后续的jQuery来操作和实现倒计时功能。

示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>倒计时Demo</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>

    <div class="wrapper">
        <input type="text" placeholder="请输入手机号">
        <button class="send-code">发送验证码</button>
        <p class="countdown">60秒后重新发送</p>
    </div>

    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="main.js"></script>
</body>
</html>

2. 样式美化

接下来,我们需要美化页面的样式,以便于用户体验。

示例代码:

.wrapper {
    width: 300px;
    margin: 100px auto;
    text-align: center;
}

input[type="text"] {
    width: 200px;
    height: 30px;
    border: none;
    outline: none;
    border-radius: 5px;
    margin-bottom: 10px;
    padding: 5px;
}

button.send-code {
    width: 200px;
    height: 30px;
    background: #42b983;
    border: none;
    outline: none;
    color: #fff;
    border-radius: 5px;
    cursor: pointer;
}

p.countdown {
    color: #666;
}

3. 实现倒计时功能

现在,我们需要用jQuery来实现倒计时功能了。具体步骤如下:

  • 点击“发送验证码”按钮后,请求后端API发送短信验证码;
  • 如果验证码发送成功,则将按钮禁用,同时开始倒计时60秒;
  • 倒计时结束后,再次启用“发送验证码”按钮。

示例代码:

$(function () {
    // 点击发送验证码按钮
    $('.send-code').on('click', function () {
        // 1. 请求后端API发送短信验证码
        // TODO...

        // 2. 禁用发送验证码按钮
        $(this).attr('disabled', 'disabled');

        // 3. 启动倒计时
        var countdown = 60;
        var timer = setInterval(function () {
            if (countdown <= 0) {
                $('.send-code').removeAttr('disabled').text('发送验证码');
                $('.countdown').hide();
                clearInterval(timer);
            } else {
                $('.countdown').text(countdown + '秒后重新发送').show();
                countdown--;
            }
        }, 1000);
    });
});

完成这段代码后,我们就可以在浏览器中打开页面,点击“发送验证码”按钮,然后就可以看到倒计时效果了。

三、示例说明

示例一

在实际开发中,我们可能需要向后端API发送请求,从而获取到短信验证码。下面是一段示例的代码:

$(function () {
    // 点击发送验证码按钮
    $('.send-code').on('click', function () {
        // 1. 请求后端API发送短信验证码
        $.ajax({
            url: '/api/sendCode',
            type: 'POST',
            dataType: 'json',
            data: {
                phone: $('input[type="text"]').val()
            },
            success: function (res) {
                if (res.status === 200) {
                    alert('验证码发送成功!');
                } else {
                    alert('验证码发送失败,请重试!');
                    $('.send-code').removeAttr('disabled').text('发送验证码');
                    clearInterval(timer);
                }
            },
            error: function () {
                alert('网络错误,请稍后重试!');
                $('.send-code').removeAttr('disabled').text('发送验证码');
                clearInterval(timer);
            }
        });

        // 2. 禁用发送验证码按钮
        $(this).attr('disabled', 'disabled');

        // 3. 启动倒计时
        var countdown = 60;
        var timer = setInterval(function () {
            if (countdown <= 0) {
                $('.send-code').removeAttr('disabled').text('发送验证码');
                $('.countdown').hide();
                clearInterval(timer);
            } else {
                $('.countdown').text(countdown + '秒后重新发送').show();
                countdown--;
            }
        }, 1000);
    });
});

示例二

如果我们需要在页面关闭后也能保持倒计时功能,这时就需要使用HTML5的Web Storage了。Web Storage 提供了两种存储机制:sessionStorage 和 localStorage。其中,sessionStorage 是会话级别的数据存储,数据只存在于当前会话窗口;而 localStorage 则是永久性的数据存储,数据在多个窗口之间共享。

下面是一段示例代码,实现了自动存储倒计时的功能:

$(function () {
    // 点击发送验证码按钮
    $('.send-code').on('click', function () {
        // 1. 请求后端API发送短信验证码
        $.ajax({
            url: '/api/sendCode',
            type: 'POST',
            dataType: 'json',
            data: {
                phone: $('input[type="text"]').val()
            },
            success: function (res) {
                if (res.status === 200) {
                    alert('验证码发送成功!');
                } else {
                    alert('验证码发送失败,请重试!');
                    $('.send-code').removeAttr('disabled').text('发送验证码');
                    clearInterval(timer);
                }
            },
            error: function () {
                alert('网络错误,请稍后重试!');
                $('.send-code').removeAttr('disabled').text('发送验证码');
                clearInterval(timer);
            }
        });

        // 2. 禁用发送验证码按钮
        $(this).attr('disabled', 'disabled');

        // 3. 启动倒计时
        var countdown = localStorage.getItem('countdown') || 60;
        var timer = setInterval(function () {
            if (countdown <= 0) {
                $('.send-code').removeAttr('disabled').text('发送验证码');
                $('.countdown').hide();
                clearInterval(timer);
                localStorage.removeItem('countdown');
            } else {
                $('.countdown').text(countdown + '秒后重新发送').show();
                countdown--;
                localStorage.setItem('countdown', countdown);
            }
        }, 1000);
    });

    // 页面加载时,恢复倒计时
    var countdown = localStorage.getItem('countdown');
    if (countdown && countdown > 0) {
        $('.send-code').attr('disabled', 'disabled');
        $('.countdown').text(countdown + '秒后重新发送').show();
    }
});

到此为止,我们已经完成了“基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)”的相关攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭) - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • jQuery Mobile Page keepNativeDefault选项

    jQuery Mobile是一个流行的移动Web开发框架,可以帮助开发人员快速构建优秀的用户界面。其中keepNativeDefault选项是jQuery Mobile Page对象特有的一个选项,可以控制页面加载行为。接下来,我们将详细讲解keepNativeDefault选项的使用和示例。 什么是keepNativeDefault选项 keepNativ…

    jquery 2023年5月12日
    00
  • jQuery简单动画变换效果实例分析

    下面是详细讲解“jQuery简单动画变换效果实例分析”的完整攻略: 一、jQuery动画实现简介 1.1 jQuery动画基础 jQuery动画是通过改变html元素的css属性,实现对网页元素的动态控制。这些动态变化的效果可以是简单变化还可以是复杂变化。jQuery实现动画效果的原理是通过改变元素CSS属性值来完成的。 1.2 动画常用方法 常用的jQue…

    jquery 2023年5月28日
    00
  • ztree获取选中节点时不能进入可视区域出现BUG如何解决

    要解决该问题,我们需要了解ztree如何设置选中节点和如何使该节点在可视区域内。 设置选中节点 使用ztree获取选中节点,我们可以通过getSelectedNodes()方法来获取选中的节点数组。该方法可以直接返回节点对象数组。如果只需要获取单个选中的节点,可以使用方法getSelectedNodes()[0]。当我们获取到选中的节点后,就可以对其进行一系…

    jquery 2023年5月18日
    00
  • jquery实现将获取的颜色值转换为十六进制形式的方法

    当我们使用jQuery获取颜色值时,返回的通常是颜色值的字符串。但是在使用颜色值时,经常需要转换为十六进制形式的字符串。下面是将一个颜色值转换为十六进制字符串的方法。 步骤1:将获取的颜色值转换为RGB值 在jQuery中,我们可以使用css函数来获取元素的颜色值,并将其转换为RGB值。此处使用一个例子: var colorValue = $(‘body’)…

    jquery 2023年5月28日
    00
  • Java中Spring WebSocket详解

    Java中Spring WebSocket详解 WebSockets是一种全双工、持久性的协议,能够在浏览器和服务器之间创建一个互动会话。Spring WebSocket简化了在Spring应用程序中使用WebSockets的流程。 使用Spring WebSocket 以下是使用Spring WebSocket的步骤: 在pom.xml文件中添加sprin…

    jquery 2023年5月27日
    00
  • jQuery中each()、find()和filter()等节点操作方法详解(推荐)

    jQuery中each()、find()和filter()等节点操作方法详解 jQuery是一个基于JavaScript的快速、小型、功能丰富,同时对多种浏览器都兼容的JavaScript库。在jQuery中,可以通过使用节点操作方法来实现对DOM元素的操作,其中each()、find()和filter()是一些常用的节点操作方法。 each()方法 eac…

    jquery 2023年5月28日
    00
  • jQuery UI选择菜单宽度选项

    jQuery UI选择菜单宽度选项攻略 jQuery UI选择菜单是一个强大的JavaScript库,它提供了许多选项和功能,以便创建自定义的选择菜单。其中,宽度选项用于设置选择菜单的宽度。以下是详细攻略,含两个示例,演示如何使用宽度选项: 步骤1:引入库 在使用之前,需要先在中入jQuery库和jQuery UI库。可以通过以下方式引入: <link…

    jquery 2023年5月9日
    00
  • jQWidgets jqxPanel宽度属性

    以下是关于 jQWidgets jqxPanel 组件中宽度属性的详细攻略。 jQWidgets jqxPanel 宽度属性 jQWidgets jqxPanel 组件的宽度属性用于设置面板的宽度。 语法 $(‘#panel’).jqxPanel({ width: 500 }); 示例 以下两个示例演示如何使用宽度属性。 示例 1 // 设置面板的宽度为 6…

    jquery 2023年5月12日
    00
合作推广
合作推广
分享本页
返回顶部