この記事では、検証コードカウントダウンボタンを実装するための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; } .num_green.num { 色: rgba(76, 175, 80, 1); } 効果画像: 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: CentOS での MySQL ログイン 1045 問題を解決する
>>: LinuxでPythonの組み込みバージョンを削除する手順の詳細な説明
#include <linux/moduleparam.h> 1. モジュールパラメータ...
困り果てて、ふと、私がよく行くSinaのタッチスクリーン版はどうやって作られているのだろう?と考えま...
効果: アイデア:入力タイプ属性を使用して、タイプ値がテキストの場合はパスワードを表示し、タイプ値が...
1. コマンドの紹介gzip (GNU zip) コマンドは、ファイルの圧縮と解凍に使用されます。こ...
目次1. コンポーネントとは何ですか? 2. グローバルコンポーネントを作成する方法1 1. Vue...
多くの友人がフォーラムやメッセージエリアで、どのような状況で MySQL をシャーディングする必要が...
MySQL の通常のソート、カスタム ソート、中国語のピンイン文字によるソート。実際の SQL を記...
1. doctypeの役割、厳密モードと混合モードの違い、そしてその重要性1. 構文形式: <...
Linux では、基本的に vi エディタのように「.sh」拡張子を持つテキストの処理と実行を記述す...
LinuxサーバーのデフォルトのSSHポート番号は通常22なので、ほとんどのユーザーはセキュリティ上...
目次序文プロミスチェーンMDN エラー連鎖デフォルト処理略語非同期待機序文この記事を書いた理由は、ユ...
replace ステートメントは、一般的に insert ステートメントに似ています。ただし、テーブ...
序文通常のユーザーはcrontabスケジュールタスクを定義します。たとえば、Oracleユーザーはス...
サーバーの負荷を軽減するために、ユーザーが入力するときにフロントエンドページで簡単な検証を実行する必...
この記事では、ネイティブ JS で実装された本をめくる効果の図を紹介します。効果は次のとおりです。 ...