この記事では、検証コードカウントダウンボタンを実装するための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の組み込みバージョンを削除する手順の詳細な説明
まず、nginx コンテナ内の構造:コンテナを入力します: docker exec -it b511...
目次いつ使うか構造的ブランチコードいつ使うか選択動作を完了するには、2 つの列間で要素を直感的に移動...
このコマンドは、データ テーブル ff_vod を変更し、vod_url フィールドの内容の後に 9...
Oracle データベースから MySQL データベースへの移行では、Oracle データベース モ...
Centos7 バージョンをインストールするときに、外部ネットワークへの接続を選択すると、外部ネット...
1. redisイメージを検索する docker 検索 redis 2. Redisイメージをダウン...
設定する前に、次の操作を行う必要があります。 1. まずjdk bloggerをインストールします。...
書き換えモジュールは ngx_http_rewrite_module モジュールです。その主な機能は...
では、GIF、PNG、JPG のどの形式を候補形式として選択すればよいのでしょうか。また、どの画像形...
設計業務では、設計者がレビューに参加したり、リーダーの一部が設計案の詳細が足りないと言っているのをよ...
この記事では、例を使用して、MYSQL データベース テーブル構造を最適化する方法を説明します。ご参...
【歴史的背景】私は 3 年間 MySQL-DBA として働いてきましたが、MySQL が「基本的に利...
序文タイトルを見ると、誰もが「Debian 9 に MySQL をインストールするにはどうすればいい...
Baiduクラウドディスク:リンク: https://pan.baidu.com/s/1hv5rUW...
ハードディスクのファイル属性のバッチ表示など、特定の種類のファイルに対してバッチ操作を実行する場合、...