小程序獲取手機驗證碼倒計時的方法

本文實例為大傢分享瞭小程序獲取手機驗證碼倒計時的具體代碼,供大傢參考,具體內容如下

test:

.wxss

.bind_input{ width: 450rpx; height: 80rpx; padding: 0 20rpx; margin: 0 auto 20rpx auto; border-radius: 40rpx; border: #ddd solid 1px;
    display: flex; justify-content: space-between; align-items: center;
}
.bind_input input{ width: 230rpx; height: 50rpx; padding-left: 30rpx;}
.bind_yzm_btn{ width: 160rpx; height: 50rpx; line-height: 50rpx; text-align: center; color: #fff; font-size: 24rpx; border-radius: 25rpx; background-color: #0FC393;}
.bind_yzm_btn.grey{ font-size: 28rpx; background-color: #ccc;}
 
.bind_btn{ width: 450rpx; height: 80rpx; line-height: 80rpx; margin: 40rpx auto 0 auto; text-align: center; color: #fff; font-size: 36rpx; font-weight: 300; border-radius: 40rpx; background-color: #0FC393;
    box-shadow:0px 10px 20px rgba(0,182,142,0.4);
}

.wxml

<view class="bind_input">
    <input type="tel" value="{{mobile}}" bindinput="setMobile" placeholder="輸入手機號" maxlength="11" placeholder-style="color:#ccc;" />
</view>
 
<view class="bind_input">
    <input type="tel" value="{[code]}" bindinput="setCode" placeholder="短信驗證碼" maxlength="4" placeholder-style="color:#ccc;" />
    <text wx:if="{{ifTimeIn}}" class="bind_yzm_btn grey">{{timeCur}}</text>
    <text wx:else bindtap="getMobileVerify" class="bind_yzm_btn">獲取驗證碼</text>
</view>
 
<view bindtap="bindDo" class="bind_btn">確定</view>

.js

Page({
 
  /**
   * 頁面的初始數據
   */
  data: {
        mobile:'',
        code:'',
        
        // 倒計時參數
        timeStart:60, //倒計時初始值
        timeCur:null, //當前倒計時顯示值
        timer:null,
        
        ifTimeIn:false, //是否倒計時中
        
        ifSendMobileVerify:false, //是否發送成功驗證碼
  },
    
    // 設置用戶輸入的手機號
    setMobile(e){
        // console.log(e.detail.value);
        this.setData({
            mobile : e.detail.value.replace(/\s+/g,"")
        });
    },
    
    // 設置用戶輸入的驗證碼
    setCode(e){
        // console.log(e.detail.value);
        this.setData({
            code : e.detail.value.replace(/\s+/g,"")
        });
    },
    
    
    
    // 倒計時
    setTime(){
        let timeCur = this.data.timeCur - 1;
        // console.log(timeCur);
        if(timeCur < 0){
            clearInterval(this.data.timer);
            this.setData({
                ifTimeIn:false
            });
            return false;
        }
        this.setData({
            timeCur : timeCur
        });
    },
    
    // 獲取驗證碼
    getMobileVerify(){
        if(!this.data.mobile){
            wx.showModal({
                title: '友情提示',
                content: '請輸入手機號',
                showCancel: false,
            });
            return false
        }
        
        if(!/^1\d{10}$/.test(this.data.mobile)){
            wx.showModal({
                title: '友情提示',
                content: '請輸入正確的手機號',
                showCancel: false,
            });
            return false;
        }
        
        wx.showLoading({
          title: "發送中",
          mask: true
        });
        
        let dataJson = {
            mobile : this.data.mobile,
        };
        
        /* ----請求後臺發送驗證碼成功---- */
        // 執行倒計時
        this.setData({
            timeCur : this.data.timeStart,
            timer : setInterval(this.setTime,1000),
            ifTimeIn : true,
            ifSendMobileVerify : true
        });
        /* ----請求後臺發送驗證碼成功---- */
        wx.hideLoading();
    },
    
    // 確定提交
    bindDo(){
        if(!this.data.ifSendMobileVerify){
            wx.showModal({
                title: '友情提示',
                content: '請確定您的手機收到驗證碼再操作',
                showCancel: false,
            });
            return false;
        }
        if(!this.data.code){
            wx.showModal({
                title: '友情提示',
                content: '請輸入驗證碼',
                showCancel: false,
            });
            return false;
        }
        
        /* ----請求後臺提交成功---- */
        wx.showToast({
            title: '成功',
            icon: 'success',
            mask: true,
            duration: 1500
        });
        /* ----請求後臺提交成功---- */
    },
 
  /**
   * 生命周期函數--監聽頁面顯示
   */
  onShow: function () {
 
  },
})

以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: