1. 程式人生 > >小程式輸入手機號並點選獲取驗證碼

小程式輸入手機號並點選獲取驗證碼

views.wxml 在這裡插入圖片描述

views.js

Page({ data: { text: ‘獲取驗證碼’, //按鈕文字 currentTime: 61, //倒計時 disabled: false, //按鈕是否禁用 phone: ‘’ //獲取到的手機欄中的值

}, //獲取手機欄input中的值 phoneInput: function (e) { this.setData({ phone: e.detail.value }) }, //獲取驗證碼按鈕 bindButtonTap: function () { var that = this;

that.setData({
  disabled: true, 
  color: '#ccc',
})

var phone = that.data.phone;
var currentTime = that.data.currentTime //把手機號跟倒計時值變例成js值

var warn = null; //warn為當手機號為空或格式不正確時提示使用者的文字,預設為空

if (phone == '') {
  warn = "號碼不能為空";
} else if (phone.trim().length != 11 || ! /^(14[0-9]|13[0-9]|15[0-9]|17[0-9]|18[0-9])\d{8}$$/.test(phone)) {
  warn = "手機號格式不正確";
} else {
  //當手機號正確的時候提示使用者簡訊驗證碼已經發送
  wx.showToast({
    title: '簡訊驗證碼已傳送',
    icon: 'none',
    duration: 2000
  });

  //設定一分鐘的倒計時
  var interval = setInterval(function () {
    currentTime--; //每執行一次讓倒計時秒數減一
    that.setData({
      text: currentTime + 's', //按鈕文字變成倒計時對應秒數

    })
    //如果當秒數小於等於0時 停止計時器 且按鈕文字變成重新發送 且按鈕變成可用狀態 倒計時的秒數也要恢復成預設秒數 即讓獲取驗證碼的按鈕恢復到初始化狀態只改變按鈕文字
    if (currentTime <= 0) {
    ?clearInterval(interval)
      that.setData({
        text: '重新發送',
        currentTime: 61,
        disabled: false,
        color: '#59b550'
      })
    }
  }, 1000);

};

//判斷 當提示錯誤資訊文字不為空 即手機號輸入有問題時提示使用者錯誤資訊 並且提示完之後一定要讓按鈕為可用狀態 因為點選按鈕時設定了只要點選了按鈕就讓按鈕禁用的情況
if (warn != null) {
  wx.showModal({
    title: '提示',
    content: warn
  })

  that.setData({
    disabled: false,
    color: '#59b550'
  })
  return;

};

},

/**

  • 生命週期函式–監聽頁面載入 */ onLoad: function (options) {

},

})

views.css

page{ font-size: 30rpx; }

.left{ float: left} .right{float: right}

.info_list { height: 103rpx; line-height: 103rpx; width: 80%; border-bottom: 1px solid #bcbcbd; padding-left: 24rpx; display: inline-block; font-size: 33rpx; margin-left: 10%; }

.shouji_info input { margin-top: 25rpx; }

.yanzheng_btn { width: 207rpx; background: #59b550; margin-right: 20rpx; height: 82rpx; margin-top: 12rpx; text-align: center; line-height: 82rpx; border-radius: 15rpx; color: #fff; font-size: 33rpx; padding: 0 10rpx; }