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

推薦する

Linux のハードリンクとソフトリンクの区別

Linux には、2 種類のファイル接続があります。1 つは Windows のショートカットに似て...

MySQL での挿入効率のいくつかの例の比較

序文最近、仕事の都合で、約 1000w の大量のデータを MySQL に挿入する必要があり、時間がか...

ES6 ループと反復可能オブジェクトの例

この記事では、ES6 の for ... of ループについて説明します。古い方法以前は、JavaS...

Docker、プレーヤー機能を備えたCMSオンデマンドシステムを構築

目次文章1. 機械を準備する2. Dockerをインストールする1. 依存パッケージをインストールす...

VUEウォッチリスナーの基本的な使い方の詳しい説明

目次1. 次のコードはwatchの簡単な使用法です2. 即時監視3. ハンドラメソッド4. 深い属性...

Linux で JDK をインストールして環境変数を設定する方法 (この記事で十分です)

目次1. Linuxのビット数を確認する2. JDKをダウンロードする3. JDKをインストールする...

CSS3 でシンプルな白い雲が浮かぶ背景効果を実現

これは非常にシンプルな純粋な CSS3 の白い雲の浮遊する背景効果です。浮かぶ白い雲の特殊効果は、C...

MySQLインデックスの基本構文

インデックスはソートされたデータ構造です。 where 条件での検索や order by 条件での並...

過去の Linux イメージの問題を修正するためのサンプル分析

過去の Linux イメージに関する問題を修正従来の Linux イメージで作成された ECS クラ...

nginx で複数の仮想ホストを設定する方法の例

nginx で仮想ホスト vhost を設定すると非常に便利です。 nginx設定ファイルnginx...

Vue を使用して Web ページのスクリーンショットを撮る方法をご存知ですか?

目次1. html2Canvasをインストールする2. 必要なVueコンポーネントを導入する3. ス...

HTML チュートリアル: よく使われる HTML タグのコレクション (6)

導入された HTML タグは、必ずしも XHTML 仕様に完全に準拠しているわけではありません。実際...

Vue-CLI マルチページディレクトリパッケージ化手順の記録

ページディレクトリ構造 デフォルトの HTML テンプレート ファイル public/index.h...

CentOS7 に Redis をインストールして設定する方法

導入Redis を詳しく説明する必要はありません。インストールと設定を始めましょう。インストールソー...

MySQL 5.7.17 圧縮パッケージのインストール不要の構成プロセス図

MySQL データベース管理ソフトウェアには、エンタープライズ エディションとコミュニティ エディシ...