1. 程式人生 > >微信小程式之獲取驗證碼js

微信小程式之獲取驗證碼js

在微信小程式中怎樣實現獲取驗證碼的倒計時功能,倒計時的原理是一樣的,就是某些地方需要注意。

第一步結構:結構

<view class='get-code' wx:if="{{!isShow}}" bindtap='getCode'>獲取驗證碼</view>
<view>{{sec}}秒後重新發送</view>
注意:微信小程式中要用到兩個按鈕,不像HTML裡面一個按鈕就解決了。如果非要一個的話,就需要把不變的內容即“獲取驗證碼”與“秒後重新發送”裝在一個數組裡面,然後判斷什麼時候選擇顯示哪一個
備註:用wx:if條件渲染來判斷某個按鈕是否顯示與隱藏。
{{sec}}是要動態顯示的秒數,只繫結一個view的click事件就不怕重複點選了。

第二步:js
我是把這個獲取驗證碼的函式作為公用的部分,所以新建一個公用的js檔案放在你想放的目錄下,然後js程式碼:

function getCode(_this,num){
    _this.setData({
        isShow: true                    //按鈕1隱藏,按鈕2顯示
    })
    var remain=num;             //用另外一個變數來操作秒數是為了儲存最初定義的倒計時秒數,就不用在計時完之後再手動設定秒數
    var time = setInterval(function () {
        if
(remain == 1) { clearInterval(time); _this.setData({ sec: num, isShow: false }) return false //必須有 } remain--; _this.setData({ sec: remain }) }, 1000) } module.exports = { getCode //此js模組化 也可以寫成getCode:getCode
}

第三步:在需要getCode函式的頁面的js中引入該公用js檔案,比如

var code=require('../../public/js/com.js')

第四步:在Page中申明:

data: {
    isShow:false,         //預設按鈕1顯示,按鈕2不顯示
    sec:"4"        //設定倒計時的秒數
},
getCode:function(){
    var _this=this;    //防止this物件的混雜,用一個變數來儲存
    var time=_this.data.sec  //獲取最初的秒數
    code.getCode(_this,time);  //呼叫倒計時函式
},

這裡寫圖片描述
這裡寫圖片描述