微信小程式之獲取驗證碼js
阿新 • • 發佈:2019-01-09
在微信小程式中怎樣實現獲取驗證碼的倒計時功能,倒計時的原理是一樣的,就是某些地方需要注意。
第一步結構:結構
<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); //呼叫倒計時函式
},