Vue は検証コードのカウントダウンボタンを実装します

Vue は検証コードのカウントダウンボタンを実装します

この記事では、検証コードカウントダウンボタンを実装するためのVueの具体的なコードを例として紹介します。具体的な内容は次のとおりです。

1. 「検証コードを送信」ボタンをクリックし、論理的な判断を実行します。

▶️ メールアドレスが入力され、形式が正しい場合: ボタンが「送信済み」に変わります。これはクリックできず120 秒のカウントダウンが始まります。
▶️ メールアドレスが入力されていない、または形式が正しくない場合: エラーメッセージが表示されます。

2. 120 秒のカウントダウンが終了すると、ボタンが「確認コードを再送信」に変わります。

html:

<div v-bind:class="{ 'text_email': isActive, 'text_tip': isTip }">{{tip}}</div> //エラープロンプト<div class="input">
    <i class="ret_icon-email"></i>
    <入力 
      タイプ="テキスト" 
      v-model="メール" 
      v-bind:class="{ 'input_email0' : hasError }" 
      v-on:click="キャンセルエラー" 
      :placeholder="メールアドレスを入力してください" 
      id="入力メールアドレス"
    />
    <br />
    <input type="text" placeholder="認証コードを入力" class="input_number" />
    <button class="btn_number" v-bind:class="{gray:wait_timer>0}" @click="getCode()">
        <span 
          クラス="num_green" 
          v-show="表示数" 
          v-bind:class="{num:wait_timer>0}"
        >{{this.wait_timer + "s"}}</span>
        <span 
          クラス="span_number" 
          v-bind:class="{gray_span:wait_timer>0}"
        >{{ getCodeText() }}</span>
    </ボタン>
    <br />
</div>

js:

データ() {
    戻る {
      ヒント: 「電子メールでパスワードを取得する」
      isTip: false、
      isActive: 真、
      表示数: 偽、
      wait_timer: 偽、
      hasError: false、
      メールアドレス: ""
    }
},
メソッド: {
    キャンセルエラー: 関数(イベント) {
      this.hasError = false;
      this.isActive = true;
      this.isTip = false;
      this.tip = "電子メールでパスワードを取得する";
    },
    取得コード: 関数() {
      (this.wait_timer > 0)の場合{
        false を返します。
      }
      if (!this.email) {
        this.hasError = true;
        this.isActive = false;
        this.isTip = true;
        this.tip = "メールアドレスは空欄にできません";
        false を返します。
      }
      もし (
        !/^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/.test(
          このメール
        )
      ){
        this.hasError = true;
        this.isActive = false;
        this.isTip = true;
        this.tip = "メールアドレスが無効です";
        false を返します。
      }
      this.showNum = true;
      this.wait_timer = 120;
      var that = this;
      var timer_interval = setInterval(関数() {
        if (that.wait_timer > 0) {
          that.wait_timer--;
        } それ以外 {
          タイマー間隔をクリアします。
        }
      }, 1000);

      //ここでAjaxを呼び出して検証コードを取得します
    },
    getCodeText: 関数() {
      (this.wait_timer > 0)の場合{
        「送信済み」を返します。
      }
      (this.wait_timer === 0)の場合{
        this.showNum = false;
        「確認コードを再送信してください!」を返します。
      }
      this.wait_timer が false の場合
        return "確認コードを送信してください!";
      }
    },
}

css:

.ret_icon-メール{
  background: url(../../assets/pics/email.svg) no-repeat; //画像はローカル画像です width: 20px;
  高さ: 20px;
  位置: 絶対;
  上: 12px;
  左: 16px;
}
.input_email0 {
  境界線: 1px実線 rgba(239, 83, 80, 1);
}
.入力番号{
  幅: 112ピクセル;
  高さ: 44px;
  テキストインデント: 16px;
  右マージン: 12px;
}
.btn_番号 {
  幅: 154ピクセル;
  高さ: 44px;
  境界線の半径: 4px;
  ボックスのサイズ: 境界線ボックス;
  境界線: 1px実線 rgba(76, 175, 80, 1);
  行の高さ: 16px;
  アウトライン: なし;
}
.span_number {
  色: rgba(76, 175, 80, 1);
}
.btn_number.gray {
  背景: rgba(242, 244, 245, 1);
  境界線: 1px実線 rgba(0, 0, 0, 0.05);
}
.span_number.gray_span {
  色: #9a9c9a;
}
.nu​​m_green.num {
  色: rgba(76, 175, 80, 1);
}

効果画像:

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

以下もご興味があるかもしれません:
  • Vue は携帯電話番号と確認コードによるログインを実装します (60 秒のカウントダウンは無効)
  • Vue ベースの画像検証コードの 60 秒カウントダウン機能を実装する
  • Vue は検証コードの効果を得るためにカウントダウンを実装します
  • Vueは検証コードカウントダウンコンポーネントを取得します
  • Vue 検証コード 60 秒カウントダウン機能 簡単なサンプルコード
  • Vueは検証コードボタンのカウントダウン機能を実装します
  • Vue検証コードの60秒カウントダウン機能の簡単な実装
  • Vue ベースの SMS 検証コード カウントダウン デモ
  • Vueはシンプルなカウントダウンボタン関数を記述します

<<:  CentOS での MySQL ログイン 1045 問題を解決する

>>:  LinuxでPythonの組み込みバージョンを削除する手順の詳細な説明

推薦する

docker nginxコンテナの起動とローカルへのマウントの詳細な説明

まず、nginx コンテナ内の構造:コンテナを入力します: docker exec -it b511...

JSネイティブ2列シャトル選択ボックスの実装例

目次いつ使うか構造的ブランチコードいつ使うか選択動作を完了するには、2 つの列間で要素を直感的に移動...

MySQLは既存のコンテンツを保持し、後でコンテンツを追加します

このコマンドは、データ テーブル ff_vod を変更し、vod_url フィールドの内容の後に 9...

OracleデータをMySQLデータベースに抽出する実装プロセス

Oracle データベースから MySQL データベースへの移行では、Oracle データベース モ...

CentOS 7 でゲートウェイを変更して IP を設定する方法の例

Centos7 バージョンをインストールするときに、外部ネットワークへの接続を選択すると、外部ネット...

Dockeにredisをインストールする方法

1. redisイメージを検索する docker 検索 redis 2. Redisイメージをダウン...

Win10 構成 Tomcat 環境変数チュートリアル図

設定する前に、次の操作を行う必要があります。 1. まずjdk bloggerをインストールします。...

Nginxの書き換えモジュールの詳細な説明

書き換えモジュールは ngx_http_rewrite_module モジュールです。その主な機能は...

ウェブ画像形式としてPNG、JPG、GIFを選択して使用する方法

では、GIF、PNG、JPG のどの形式を候補形式として選択すればよいのでしょうか。また、どの画像形...

ウェブデザインの詳細分析に関する詳細な議論

設計業務では、設計者がレビューに参加したり、リーダーの一部が設計案の詳細が足りないと言っているのをよ...

MYSQLデータベーステーブル構造の最適化方法の詳細な説明

この記事では、例を使用して、MYSQL データベース テーブル構造を最適化する方法を説明します。ご参...

MySQL の WriteSet 並列レプリケーションの簡単な分析

【歴史的背景】私は 3 年間 MySQL-DBA として働いてきましたが、MySQL が「基本的に利...

Debian 9 システムに MySQL データベースをインストールする方法

序文タイトルを見ると、誰もが「Debian 9 に MySQL をインストールするにはどうすればいい...

Centos 7 mysql-8.0.19-1.el7.x86_64.rpm-bundle.tar の簡単な分析

Baiduクラウドディスク:リンク: https://pan.baidu.com/s/1hv5rUW...

Linux コマンドラインのワイルドカードとエスケープ文字の実装

ハードディスクのファイル属性のバッチ表示など、特定の種類のファイルに対してバッチ操作を実行する場合、...