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コンテナが停止できない問題の解決方法

推薦する

Vue テンプレート構成と Webstorm コード形式仕様設定

目次1. コンパイラコードフォーマット仕様設定2. Vueテンプレートの設定1. コンパイラコードフ...

Linux のような環境で jdk1.8 をインストールし、環境変数を設定する方法の詳細な説明

設定は非常にシンプルですが、毎回確認しないといけないので、記録だけ残しておきます。 1. インストー...

CentOS 7 で RPM を使用して mysql5.7.13 をインストールする

0. 環境この記事のオペレーティング システム: CentOS 7.2.1511 x86_64 My...

JavaScript キャンバスでカラフルな太陽のハロー効果を実現

この記事では、カラフルな太陽のハロー効果を実現するためのJavaScriptキャンバスの具体的なコー...

Alibaba Cloud で静的ウェブサイトを素早く構築する方法

序文:ジュニアプログラマーとして、私は自分自身の個人ウェブサイトを構築し、それを他の人に見せることを...

CocosCreator 入門チュートリアル: ネットワーク通信

ネットワーク通信の概要オンライン ゲームを開発する場合、必然的にネットワーク通信に対処する必要があり...

vscodeカスタムvueテンプレートの実装

vscode エディタを使用して vue テンプレートを作成すると、新しい vue ファイルを作成す...

MySQLバックアップとリカバリの実践に関する詳細な説明

1. mysqlbackup の紹介mysqlbackup は、MySQL Enterprise B...

Linux でのファイルの編集、保存、終了の実践的な説明

Linux でファイルを編集した後、保存して終了するにはどうすればよいですか?保存して終了するコマン...

docker の実行に必要な権限の分析

Docker を実行するには root 権限が必要です。非 root ユーザーに docker コマ...

Oracle の MySQL バージョンでユーザー Scott のテーブル ステートメントを作成する例

概要: Oracle scottユーザーには4つのテーブルがあり、実験やデータ検証に便利です。現在は...

Vue ルーターにパラメータを渡すときにページを更新するとパラメータが失われる問題に対処する方法

目次概要方法1: params経由でパラメータを渡す方法2: クエリを通じてパラメータを渡す方法3:...

CSS の画像パスの問題に関する議論 (同じパッケージ/異なるパッケージ)

CSS ファイルでは、背景を使用する、つまり背景画像を追加する必要がある場合があります。これは通常、...

ページ内の検索エンジンの呼び出しはBaiduを例に挙げています

今日、突然、自分のウェブページで Google や Baidu のような強力な検索エンジンを呼び出す...

MySQL ソートの原則とケース分析

序文ソートはデータベースの基本的な機能であり、MySQL も例外ではありません。ユーザーは、Orde...