1. 程式人生 > >Vue實現傳送短息60秒倒計時

Vue實現傳送短息60秒倒計時

Vue實現傳送短息60秒倒計時

Vue實現註冊賬號時,傳送簡訊60秒倒計時功能,並進行手機號校驗的Demo案例,如果能幫到您,我感到非常榮幸,廢話不多說,直接上乾貨,

首先來一個測試頁面,引入Vue.js,及基本格式

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>使用者註冊</title>
<script src="js/vue/vue.js"></script> </head> <body> <div id="app"> <label for="">手機號碼:</label> <input type="text" name="mobile"/> <input type="button" value="傳送"> </div> <script> new Vue({ el:
"#app", data:{ }, methods:{ }, })
</script> </body> </html>

根據需求編寫data中的資料

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <
title
>
使用者註冊</title> <script src="js/vue/vue.js"></script> </head> <body> <div id="app"> <label for="">手機號碼:</label> <input type="text" name="mobile"/> <input type="button" value="傳送"> </div> <script> new Vue({ el:"#app", data:{ // 倒計時週期 countNum:60, // 用於倒計時標記,true-正在倒計時 countFlag:false, // 定時器 intervalBtn:{}, btnMsg:"點擊發送驗證碼", //手機號碼 mobile:"" }, methods:{ }, }) </script> </body> </html>

編寫方法和資料渲染

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>使用者註冊</title>
    <script src="js/vue/vue.js"></script>
    <script src="js/vue/axios.js"></script>
</head>
<body>
    <div id="app">
        <label for="">手機號碼:</label>
        <input type="text" class="txt" name="mobile" v-model="mobile"/>
        <input type="button" :disabled="countFlag" @click="sendMobile" v-model="btnMsg == null ? countNum+'s後重新發送' : btnMsg">
    </div>
<script>
    new Vue({
        el:"#app",
        data:{
            // 倒計時週期
            countNum:60,
            // 用於倒計時標記,true-正在倒計時
            countFlag:false,
            // 定時器
            intervalBtn:{},
            //預設按鈕的值
            btnMsg:"點擊發送驗證碼",
            //手機號碼
            mobile:""
        },
        methods:{
            // 倒計時
            countDown(){
                // 設定btn倒計時時顯示的資訊
                this.btnMsg = null;
                // 更改btn狀態
                this.countFlag =! this.countFlag;
                // 設定倒計時
                this.intervalBtn = setInterval(() => {
                    if(this.countNum <= 0) {
                        // 重置btn提示資訊
                        this.btnMsg = "點擊發送驗證碼";
                        // 清除定時器
                        clearInterval(this.intervalBtn)
                        // 更改btn狀態
                        this.countFlag =! this.countFlag;
                        // 重置倒計時狀態
                        this.countNum = 5;
                    };
                    // 倒計時
                    this.countNum -- ;
                }, 1000);
            },
            sendMobile(){
            	//獲取輸入手機號碼
                let mobile = this.mobile
                //正則校驗手機號是否合法
                if(!(/^1(3|4|5|7|8)\d{9}$/.test(mobile))){
                    alert("手機號錯誤")
                    return
                }
               	//觸發定時器方法
                this.countDown()    
            }
        },
    })
</script>
</body>
</html>

如有您有任何疑問,歡迎評論