原生 JS 實現手機驗證碼倒計時


可以使用 pointer-events 來阻止元素成為鼠標事件的 target。html5 新增操作元素 class 類名的方式 classList。

classList 方法

  • add(value):在元素中添加一個或多個類名。如果值已經存在,就不添加了。
  • contains(value): 返回布爾值,判斷指定的類名是否存在。
  • remove(value):移除元素屬性列表中一個或多個類名。注意: 移除不存在的類名,不會報錯。
  • toggle(value):在元素中切換類名。如果列表中已經存在給定的值,刪除它;如果列表中沒有給定的值,添加它

原生 JS 實現手機驗證碼倒計時

單擊“發送驗證碼”后,需等待 10 秒才能再次單擊“重發獲取”,在此期間,可以使用 pointer-events 來阻止元素成為鼠標事件的目標。源碼參考如下。

<!DOCTYPE html>
<html>

<head>
    <title> 手機驗證碼 </title>
    <meta charset="utf-8" />
</head>

<style>
    a{
        color:red;
    }
    .disable{
        pointer-events:none;
        color:#666;
    }
</style>

<body>
    <p>
        <input type="text" placeholder="請輸入手機號">
    </p>
    <p>
        <input type="text" placeholder="驗證碼">
        <a href="javascript:;" id="btn">發送驗證碼</a>
    </p>


    <script type="text/javascript">
        var oBtn = document.getElementById('btn');
        var flag = true;

        oBtn.addEventListener("click", function () {
            var time = 10;
            oBtn.classList.add('disable');
            oBtn.innerText = '已發送';

            if (flag) {
                flag = false;
                var timer = setInterval(() => {
                    time--;
                    oBtn.innerText = time + ' 秒';
                    if (time === 0) {
                        clearInterval(timer);
                        oBtn.innerText = '重新獲取';
                        oBtn.classList.remove('disable');
                        flag = true;
                    }
                }, 1000)
            }
        });

    </script>
</body>

</html>


免責聲明!

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



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