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

推薦する

ウェブページを作る前に、これらのいわゆる仕様を見てみましょう

この記事では、Web ページを作成する前に確認すべき、いわゆる仕様をいくつかまとめました。皆様のお役...

HTML+SassはHambergurMenu(ハンバーガーメニュー)を実装します

先日、外国人の方がHTML+CSSを使ってHamburgerMenuを実装している動画を見ました。最...

dockerコンテナがIP経由でホストマシンにアクセスできない問題を解決する方法の詳細な説明

問題の起源docker を使用する場合、残念ながら docker コンテナ内のホストのポート 80 ...

VMware で VMware ツールをインストールしてもインストール ファイルが表示されない問題を解決する方法

VMware ツールは VMware の使用に非常に便利です。そのため、VMware ツールをインス...

Vueはテーマ切り替えのための複数のアイデアを実装します

目次テーマを動的に変更する最初の方法: 動的コンポーネント2番目の方法はルーティング分離です要約する...

JSは円形のプログレスバーのドラッグとスライドを実装します

この記事の例では、円形のプログレスバーのドラッグアンドスライドを実現するための具体的なJSコードを紹...

vue プロジェクトで rem を使用して px を置き換える例

目次道具プラグインをインストールするプロジェクトのルートディレクトリに.postcssrc.jsファ...

MySQL ロックの知識ポイントのまとめ

ロックの概念①. 現実世界では、鍵は外の世界から身を隠したいときに使う道具です。 ②. コンピュータ...

いくつかの面接の質問を使ってJavaScriptの実行メカニズムを調べる

目次前の単語同期と非同期前菜プレートを追加マクロタスク マイクロタスク約束しましょうタイマーを追加す...

CSS を使用して、左側に固定幅、右側に適応幅を持つ 2 列レイアウトを実装する複数の方法

CSS を使用して、左側に固定幅、右側に適応幅を持つ 2 列レイアウトを実装する 7 つの方法。コー...

CSS でホバー ドロップダウン メニューを実装する方法

いつものように、今日は非常に実用的な CSS 効果についてお話します。マウスがボタンに移動すると、ド...

JSはショッピングカート内の商品の合計金額の計算を実現します

JSはショッピングカート内の商品の合計金額を計算して参考とします。具体的な内容は以下のとおりです。質...

CSS フロートプロパティ図 フロートプロパティの詳細

CSS の float プロパティを正しく使用することは、カバーすべき内容が多く、ブラウザの互換性の...

Dockerfile をベースに Zabbix 監視システムのコード例を作成する

forループを使用してZabbixイメージをコンテナにインポートします。 n を `ls *.tar...

Dockerを使用してMQTTサーバーを構築するプロセスの詳細な説明

1. イメージをプルするdocker pull registry.cn-hangzhou.aliyu...