WeChatアプレットがSMS認証コード送信のカウントダウンを実装

WeChatアプレットがSMS認証コード送信のカウントダウンを実装

この記事では、WeChatアプレットがSMS認証コードのカウントダウンを送信するための具体的なコードを参考までに共有します。具体的な内容は次のとおりです。

レンダリング

WXML ファイル

<ビュークラス="コンテナ">
  <view class="userinfo">
    <image class="userinfo-avatar" src="../../images/timg.jpg" mode="カバー"></image>
    <text class="userinfo-nickname">何</text>
  </ビュー>
  <view class="wrap">
    <view class="tel">
      <input type="number" bindinput="bindTelInput" maxlength="11" 
         placeholder="電話番号を入力してください"
         プレースホルダースタイル="color:#C3C6C4;"/>
    </ビュー>
    <view class="ver-code">
      <view class="code">
        <input type="number" bindinput="bindCodeInput" maxlength="6"
               placeholder="確認コードを入力してください"
               プレースホルダースタイル="color:#C3C6C4;"/>
      </ビュー>
      <view class="getCode" bindtap="getCode" wx:if="{{countDownNum == 60 || countDownNum == -1}}">
        <button type="primary" plain="true">確認コードを取得</button>
      </ビュー>
      <view class="getCode" wx:else>
        <button type="primary" plain="true">{{countDownNum}} 秒後に再取得</button>
      </ビュー>
    </ビュー>
  </ビュー>
  <view class="btn-login" bindtap="login">ログイン</view>
</ビュー>

JSファイル

//アプリケーションインスタンスを取得する const app = getApp()

ページ({

  /**
   * ページの初期データ */
  データ: {
    phone: null, // 電話番号 code: null, // 電話認証コード countDownNum: 60, // カウントダウン初期値 },

  /**
   * ライフサイクル機能 - ページの読み込みをリッスンする*/
  onLoad: 関数 (オプション) {

  },

  /**
   * ライフサイクル機能 - モニターページ表示 */
  onShow: 関数() {
    
  },
  
  /**
   * ライフサイクル関数 - ページの初期レンダリングの完了を待機します*/
  onReady: 関数 () {

  },
  
  /**
   * ユーザーは右上隅をクリックして共有します*/
  onShareAppMessage: 関数 () {

  },
  // 電話番号を入力 bindTelInput: function (e) {
    this.setData({
      電話番号: e.detail.value
    })
  },
  // 検証コードを入力するbindCodeInput: function (e) {
    this.setData({
      コード: e.detail.value
    })
  },
  // モバイル認証コードを送信getCode: function () {
    if (!!this.data.phone) {
      (!!(/^1[34578]\d{9}$/.test(this.data.phone)))の場合{
        wx.showToast({
          タイトル:「送信に成功しました」
          アイコン: "なし",
          所要時間: 1500
        })
        this.countDown()
      } それ以外 {
        wx.showToast({
          タイトル:「有効な携帯電話番号を入力してください」
          アイコン: "なし",
          所要時間: 1500
        })
      }
    } それ以外 {
      wx.showToast({
        タイトル: 「携帯電話番号を入力してください」
        アイコン: "なし",
        所要時間: 1500
      })
    }
  },
  /**
   * 認証コードのカウントダウン */
  カウントダウン: 関数 () {
    var _this = これ
    var countDownNum = _this.data.countDownNum // カウントダウンの初期値を取得します var timer = setInterval(function () {
      カウントダウン数 -= 1
      _this.setData({
        カウントダウン数: カウントダウン数
      })
      カウントダウン数 <= -1 の場合 {
        クリアインターバル(タイマー)
        // setInterval関数が実行するコードの固定を解除する_this.setData({
          カウントダウン数: 60
        })
      }
    }, 1000)
  },
  // 携帯電話認証コードログイン: function () {
    if (this.data.phone) {
      (!!(/^1[34578]\d{9}$/.test(this.data.phone)))の場合{
        if (this.data.code) {
          wx.showToast({
            タイトル: 「ログイン成功」、
            アイコン: "なし",
            所要時間: 1500
          })
        } それ以外 {
          wx.showToast({
            タイトル: 「確認コードを入力してください」
            アイコン: "なし",
            所要時間: 1500
          })
        }
      } それ以外 {
        wx.showToast({
          タイトル:「有効な携帯電話番号を入力してください」
          アイコン: "なし",
          所要時間: 1500
        })
      }
    } それ以外 {
      wx.showToast({
        タイトル: 「携帯電話番号を入力してください」
        アイコン: "なし",
        所要時間: 1500
      })
    }
  }
})

WXSS ファイル

.ユーザー情報{
  高さ: 240rpx;
  マージン: 40rpx 自動 0;
  ディスプレイ: フレックス;
  flex-direction: 列;
  アイテムの位置を中央揃えにします。
}

.userinfo .userinfo-アバター {
  幅: 140rpx;
  高さ: 140rpx;
  マージン: 20rpx;
  境界線の半径: 50%;
  境界線: 1rpx 実線 #dad5d5;
}

.userinfo .userinfo-ニックネーム {
  色: #aaa;
}

。包む {
  幅: 630rpx;
  フォントサイズ: 32rpx;
  マージン: 80rpx 自動 120rpx;
}

.wrap .tel {
  幅: 100%;
  高さ: 68rpx;
  下部境界線: 1rpx 実線 #DDE3EC;
  下部マージン: 60rpx;
  ディスプレイ: フレックス;
  flex-direction: 列;
  コンテンツの配置: flex-start;
}

.wrap .ver-code {
  幅: 100%;
  高さ: 68rpx;
  下部境界線: 1rpx 実線 #DDE3EC;
  ディスプレイ: フレックス;
  コンテンツの両端揃え: スペースの間;
}

.wrap .ver-code .code {

}

.wrap .ver-code .getCode {
  最小幅: 190rpx;
  高さ: 40rpx;
}

.wrap .ver-code .getCode ボタン {
  幅: 100%;
  高さ: 100%;
  フォントサイズ: 28rpx;
  フォントの太さ: 標準;
  行の高さ: 40rpx;
  背景: #fff;
  色: #ffaa7f;
  境界線: なし;
  パディング: 0;
  マージン: 0;
}

.btnログイン{
  幅: 588rpx;
  高さ: 88rpx;
  背景: #ffaa7f;
  境界線の半径: 10rpx;
  テキスト配置: 中央;
  行の高さ: 88rpx;
  フォントサイズ: 36rpx;
  フォントの太さ: 500;
  色: #fff;
  マージン: 0 自動;
}

.clickClass{
  背景: #ea986c;
}

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • WeChatアプレットが認証コードのカウントダウン効果を実現
  • WeChatアプレットが認証コードのカウントダウンを実装
  • WeChatアプレットは、電話で認証コードを取得するための60秒のカウントダウンを実装します
  • WeChatアプレットの登録ページにはカウントダウン検証コードが含まれており、ユーザー情報を取得します。
  • WeChatアプレットプロジェクト実践検証コードカウントダウン機能
  • WeChatアプレットが認証コード取得カウントダウン効果を実装
  • WeChatアプレットは認証コードを取得するための60秒のカウントダウンを実装
  • WeChatアプレットがSMS認証コードのカウントダウンを実装

<<:  MySQL における datetime と timestamp の違いと使い方

>>:  Dockerコンテナが停止できない問題の解決方法

推薦する

ReactアプリケーションにおけるDOM DIFFアルゴリズムの詳細な説明

目次序文VirtualDOM とは何ですか? VirtualDOMを使用する理由DOMレンダリングペ...

jsは配列の平坦化を実装します

目次配列をフラット化する方法1.flat() の使用2. 正規表現を使用する3.reduce()+c...

Python Flask WeChat アプレットのログインプロセスとログイン API 実装コード

1. まずは効果を見てみましょうインターフェース要求によって返されるデータ: 2. 公式ログインフロ...

MySQL ストアド プロシージャで月ごとにテーブルを作成する方法

詳細には立ち入らずに、コードに直接進みましょう。一緒にコミュニケーションを取り、学びましょう。月ごと...

MySQL InnoDBとMyISAMの違いを簡単に理解する

序文MySQL は、myisam、innodb、memory、archive、example など、...

Explainキーワードに基づいてMySQLインデックス機能を最適化する方法

EXPLAIN は、MySQL がインデックスを使用して選択ステートメントを処理し、テーブルを結合す...

MySql で SQL 実行プランをクエリするために explain を使用する方法

explain コマンドは、クエリ オプティマイザーがクエリの実行を決定した方法を確認する主な方法で...

Vue el-date-picker 動的制限時間範囲ケースの詳細な説明

2つの状況がある1. 開始時間と終了時間が同じボックス内にあります(今月のみ限定) 2. 開始時間と...

Linux 上の Nginx に複数のバージョンの PHP をインストールする

サーバーの LNPM 環境をインストールして構成する場合、複数のバージョンの PHP の共存を考慮す...

jsはreduceメソッドを使用してコードをよりエレガントにします

序文実際のプロジェクトでは、最も一般的な処理は計算とループロジックである可能性があります。配列でre...

MySQLの明示的な型変換の簡単な分析

CAST関数前回の記事では、型変換を表示するために使用する CAST 関数について説明しました。暗黙...

Linux ネットワークプログラミング機能の簡単な分析

目次1.ソケットを作成する2. ソケットをバインドする3. 聞き手を作る。聞く4. 接続が受け入れら...

Unicodeの一般的な記号

Unicode は、世界中のすべてのテキストと記号に対応できる国際組織によって開発された文字エンコー...

JavaScript はチェックボックスの選択機能を実装します

この記事の例では、すべてのチェックボックスの選択を実現するためのJavaScriptの具体的なコード...