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の組み込みバージョンを削除する手順の詳細な説明

推薦する

メタビューポートはiPhoneでウェブページをフルスクリーン表示コントロールします

困り果てて、ふと、私がよく行くSinaのタッチスクリーン版はどうやって作られているのだろう?と考えま...

Vueでパスワードの表示と非表示機能を実装するアイデアを詳しく解説

効果: アイデア:入力タイプ属性を使用して、タイプ値がテキストの場合はパスワードを表示し、タイプ値が...

Linux gzipコマンドの使用

1. コマンドの紹介gzip (GNU zip) コマンドは、ファイルの圧縮と解凍に使用されます。こ...

Vueコンポーネントの作成方法と使用方法を説明する記事

目次1. コンポーネントとは何ですか? 2. グローバルコンポーネントを作成する方法1 1. Vue...

MySQL テーブルとデータベース シャーディングのアプリケーション シナリオと設計方法

多くの友人がフォーラムやメッセージエリアで、どのような状況で MySQL をシャーディングする必要が...

MySQL の従来のソート、カスタム ソート、中国語のピンイン文字によるソート

MySQL の通常のソート、カスタム ソート、中国語のピンイン文字によるソート。実際の SQL を記...

HTML面接の質問の要約

1. doctypeの役割、厳密モードと混合モードの違い、そしてその重要性1. 構文形式: <...

bashコマンドの使い方の詳細な説明

Linux では、基本的に vi エディタのように「.sh」拡張子を持つテキストの処理と実行を記述す...

CentOS のデフォルトの SSH ポート番号を変更する方法の例

LinuxサーバーのデフォルトのSSHポート番号は通常22なので、ほとんどのユーザーはセキュリティ上...

JS 非同期コードユニットテストの魔法 Promise

目次序文プロミスチェーンMDN エラー連鎖デフォルト処理略語非同期待機序文この記事を書いた理由は、ユ...

mysql replace into の使用法の詳細な説明

replace ステートメントは、一般的に insert ステートメントに似ています。ただし、テーブ...

Linuxの一般ユーザー向けスケジュールタスクの詳細な説明

序文通常のユーザーはcrontabスケジュールタスクを定義します。たとえば、Oracleユーザーはス...

JavaScript はパスワードボックスの入力検証を実装します

サーバーの負荷を軽減するために、ユーザーが入力するときにフロントエンドページで簡単な検証を実行する必...

本をめくる効果を実現するネイティブJS

この記事では、ネイティブ JS で実装された本をめくる効果の図を紹介します。効果は次のとおりです。 ...