ネイティブ js はフォームの定期的な検証を実装します (検証後にのみ送信)

ネイティブ js はフォームの定期的な検証を実装します (検証後にのみ送信)

以下の機能が実装されています。

1. ユーザー名: onfouc は msg ルールを表示します。onkeyup は文字数をカウントします。中国語の文字は 2 文字です。onblur は合格かどうかを検証します。

2. メールボックス: onblur正規表現マッチング、正規表現は自分のニーズに合わせて書かれ、個人のニーズに合わせて変更することができます

3. パスワード: オンキーアップ時にパスワードの強度を表示し、オンブラー時にパスワードを検証し、同じ文字かどうか、すべて文字かすべて数字か、長さが要件を満たしているかどうかを確認します。

4. パスワードの確認: 前回と同じかどうかを確認します

5. 送信ボタンは、すべての入力が検証された後にのみ有効になります。それ以外の場合は無効です。

要点:

1. 中国語は2文字です。

関数 getLength(str) {
    str.replace(/[^\x00-xff]/g, "xx").lengthを返します。
    //x00-xff は ASCII コードのすべての 2 バイト文字を表します。この文は、すべての非 1 バイト文字を xx、つまり 2 つの 1 バイト文字に置き換えて、長さを計算することを意味します}

2. メール検証用の正規表現:

var re_e = /^[\w_\.\-]+@[\w]+.([\w]{2,4})$/g

3. すべての文字は同じですか?

関数findStr(str, n){
    var temp = 0;
    for(var i = 0;i<str.length;i++){
        if(str.charAt(i)==n){
            温度++:
        };
    }
}

4. すべて数字ですか、それともすべて文字ですか?

 var re_n = /[^\d]/g;
 if(!re_n.test(str)){//すべて数値です}

 var re_n = /[^\a-zA-Z]/g ;
 if(!re_n.test(str)){//すべての文字}

5. ボタンは、すべてのフォーム検証に合格し、送信できる場合にのみ有効です。

//私のアプローチは、email_state などの検証識別子を各入力に追加し、別の検証関数を記述して、これら 4 つの入力の検証識別子を検証し、ボタンをクリック可能に設定します。そうでない場合はボタンは無効になります。そして、onblur ごとにこの検証関数を 1 回呼び出します。

完全なコードは次のとおりです。

関数レジスタ(){
    var oName = document.getElementById("名前");
    var count = document.getElementById("count");
    var psw = document.getElementById("psw");
    var psw2 = document.getElementById("psw2");
    var email = document.getElementById("email");
    var name_msg = document.getElementsByClassName("name_msg")[0];
    var psw_msg = document.getElementsByClassName("psw_msg")[0];
    var psw2_msg = document.getElementsByClassName("psw2_msg")[0];
    var email_msg = document.getElementsByClassName("email_msg")[0];
    var psw = document.getElementById("psw");
    var psw2 = document.getElementById("psw2");
    var 強度 = getByClass("強度")[0].getElementsByTagName("スパン");
    var registerbtn = document.getElementById("送信");
    var oName_state = false;
    var email_state = false;
    var psw_state = false;
    var psw2_state = false;
    var name_length = 0;

    oName.onfocus = 関数() {
        name_msg.style.display = "インラインブロック";
    }
    oName.onkeyup = 関数() {
        count.style.visibility = "表示可能";
        name_length = getLength(this.value);
        count.innerHTML = name_length + "文字数";
        (name_length == 0)の場合{
            count.style.visibility = "非表示";
        }
    }
    oName.onblur = 関数() {
        //不正な文字が含まれています、空にできません、長さが 25 を超えています、長さが 6 文字未満です var re = /[^\w\u4e00-\u9fa5]/g;
        if (再テスト(this.value)) {
            name_msg.innerHTML = "<i class='fa fa-close'>不正な文字が含まれています</i>";
            oName_state = false;
        } それ以外の場合 (this.value == "") {
            name_msg.innerHTML = "<i class='fa fa-close'>空にすることはできません</i>";
            oName_state = false;
        } そうでない場合 (name_length > 25) {
            name_msg.innerHTML = "<i class='fa fa-close'> 25 文字を超えることはできません</i>";
            oName_state = false;
        } そうでない場合 (name_length < 6) {
            name_msg.innerHTML = "<i class='fa fa-close'>6 文字未満にすることはできません</i>";
            oName_state = false;
        } それ以外 {
            name_msg.innerHTML = "<i class='fa fa-check-square'>OK!</i>";
            oName_state = true;
        }
        チェックフォーム();
    }

    psw.onfocus = 関数() {
        psw_msg.style.display = "インラインブロック";
        psw_msg.innerHTML = "<i class='fa fa-lightbulb-o'>6~16 文字の文字、数字、記号を単独で使用することはできません</i>"
    }
    psw.onkeyup = 関数() {
        (この値の長さ>5)の場合{
            強度[1].className = "アクティブ";
            psw2.removeAttribute("無効");
            psw2_msg.style.display = "インラインブロック";
        } それ以外 {
            強度[1].className = "";
            psw2.setAttribute("無効", "");
            psw2_msg.style.display = "なし";
        }
        (この値の長さが10より大きい場合){
            強度[2].className = "アクティブ";
            psw2.removeAttribute("無効");
            psw2_msg.style.display = "インラインブロック";
        } それ以外 {
            強度[2].className = "";
        }
    }
    psw.onblur = 関数() {
        // 空にすることはできません、同じにすることはできません、文字の長さは 6 ~ 16 です、すべて数字にすることはできません、すべて文字にすることはできません var m = findStr(psw.value, psw.value[0]);
        var re_n = /[^\d]/g;
        var re_t = /[^a-zA-Z]/g;
        if (this.value == "") {
            psw_msg.innerHTML = "<i class='fa fa-close'>空にすることはできません</i>";
            psw_state = false;
        } そうでない場合 (m == this.value.length) {
            psw_msg.innerHTML = "<i class='fa fa-close'> 同じ文字は使用できません</i>";
            psw_state = false;
        } それ以外の場合 (this.value.length < 6 || this.value.length > 16) {
            psw_msg.innerHTML = "<i class='fa fa-close'>長さは 6 ~ 16 文字にする必要があります</i>";
            psw_state = false;
        } そうでない場合 (!re_n.test(this.value)) {
            psw_msg.innerHTML = "<i class='fa fa-close'>すべて数字にすることはできません</i>";
            psw_state = false;
        } そうでない場合 (!re_t.test(this.value)) {
            psw_msg.innerHTML = "<i class='fa fa-close'>すべて文字にすることはできません</i>";
            psw_state = false;
        } それ以外 {
            psw_msg.innerHTML = "<i class='fa fa-check-square'>OK!</i>";
            psw_state = true;
        }
        チェックフォーム();
    }


    psw2.onblur = 関数() {
        (psw2.value != psw.value) の場合 {
            psw2_msg.innerHTML = "<i class='fa fa-close'>2 つの入力が矛盾しています</i>";
            psw2_state = false;
        } それ以外 {
            psw2_msg.innerHTML = "<i class='fa fa-check-square'>OK!</i>";
            psw2_state = true;
        }
        チェックフォーム();
    }

    email.onblur = 関数() {
        var re_e = /^[\w_\-\.]+@[\w]+\.([\w]{2,4})$/g;
        if (!re_e.test(this.value)) {
            email_msg.innerHTML = "<i class='fa fa-close'>正しいメール形式を入力してください</i>";;
            電子メールの状態 = false;
        } それ以外 {
            email_msg.innerHTML = "<i class='fa fa-check-square'>OK!</i>";
            電子メールの状態 = true;
        }
        チェックフォーム();
    }
    関数チェックフォーム() {
        oName_state && oName_state && psw_state && psw2_state) の場合 {
            registerbtn.removeAttribute("無効");
            // registerbtn.className+=" "+"readySubmit";
            $("#submit").addClass("readySubmit");
        } それ以外 {
            registerbtn.setAttribute("無効", "");
            //registerbtn.className = registerbtn.className.replace( 新しい RegExp( "(\\s|^)" + "readySubmit" + "(\\s|$)" ), " " );  
            // registerbtn.className = registerbtn.className.replace( /(\s|^)readySubmit(\s|$)/g, " " );       
            $("#submit").removeClass("readySubmit");
        }
    }
}

関数 getLength(str) {
    str.replace(/[^\x00-xff]/g, "xx").lengthを返します。
}

関数findStr(str, n) {
    var temp = 0;
    (var i = 0; i < str.length; i++) の場合 {
        str.charAt(i) == nの場合{
            温度++;
        }
    }
    温度を返します。
}

HTMLコードの一部

<フォームid="フォーム">
   <div class="名前フィールド">
        <label>ユーザー名</label>
        <input type="text" id="name" autofocus requiered/><span class="msg name_msg"><i class="fa fa-lightbulb-o"> 5〜25文字、1つの中国語文字は2文字です。中国語のメンバー名を使用することをお勧めします</i></span>
        <div id="count">0 文字</div>
   </div>
   <div class="email-field" 必須>
        <label>メールボックス</label>
       <input type="text" id="email" /><span class="msg email_msg"></span>
       </div>
   <div class="pwd-field" 必須>
        <label>パスワード</label>
        <input type="password" id="psw" /><span class="msg psw_msg"></span>
        <div class="強度">
            <span class="active">弱い</span><span>中程度</span><span>強い</span>
       </div>
   </div>
   <div class="pwd2-field" 必須>
        <label>パスワードの確認</label>
        <input type="password" id="psw2" disabled="" /><span class="msg psw2_msg">もう一度入力してください</span>
   </div>
   <button type="submit" id="submit" disabled="" class="submitBtn">登録</button>
</フォーム>

CSS部分

.nameフィールド{
    上マージン: 10px
}

.emailフィールド{
    上マージン: 3px
}

.pwdフィールド{
    上マージン: 10px
}

.pwd2フィールド{
    上マージン: 10px
}

.register ラベル {
    フロート: 左;
    幅: 80ピクセル;
    右マージン: 10px;
    テキスト配置: 右
}

.register .name_msg、
.レジスタ .psw_msg、
.register .psw2_msg、
.register .email_msg {
    左マージン: 10px;
    表示: なし
}

。強度、
#カウント{
    左パディング: 90px;
    上マージン: 3px
}

#カウント{
    可視性: 非表示;
    色: #999;
    フォントサイズ: 12px
}

.intensity スパン {
    表示: インラインブロック;
    背景: #FBAA51;
    幅: 55px;
    高さ: 20px;
    テキスト配置: 中央
}

.強度 .アクティブ {
    背景: rgba(0, 128, 0, 0.61)
}

.register .submitBtn {
    幅: 163ピクセル;
    マージン: 10px 0 0 90px
}

#提出する {
    色: #555
}

要約する

ネイティブ js を使用した通常のフォーム検証 (検証後にのみ送信) を実装する方法に関するこの記事はこれで終わりです。js を使用した通常のフォーム検証の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • JavaScript フォーム検証の例
  • フォーム検証機能を実装するためのネイティブ js
  • JavaScript によるフォーム検証の実装
  • JS シンプルなフォーム検証関数の完全な例
  • フォーム要素を使用してフォームを検証するために JavaScript を使用するサンプル コード
  • JavaScriptはフォーム登録、フォーム検証、演算子関数を実装します
  • JS で実装されたシンプルなフォーム検証の完全な例
  • JS で実装されたシンプルなフォーム検証機能の例
  • JavaScript の基本的なフォーム検証の例 (純粋な Js 実装)
  • JavaScript によるフォーム検証の実装

<<:  MySQL ストアド プロシージャの権限の問題の概要

>>:  JavaでTomcatサーバーを起動/停止する方法

推薦する

Vue Element-ui フォーム検証ルールの実装

目次1. はじめに2. ルール検証の入力モード2.1 サンプルコード2.2、フォーム項目2.3. 小...

MySQLの3値ロジックとNULLの詳細な説明

目次NULLとは何か2種類のNULLなぜ「= NULL」ではなく「IS NULL」と書く必要があるの...

jQueryのanimateアニメーションメソッドとアニメーションキューイング問題の解決方法の詳しい説明

目次animate() アニメーションメソッドアニメーションキューイングdelay() メソッドアニ...

MySQL のインデックスにおける NULL の影響についての詳細な説明

序文私は多くのブログを読み、弊社の DBA を含む多くの人々が、MySql では列に null が含...

Expressを使用してプロジェクトを自動的にビルドするNode.jsのプロセス全体

1. Expressライブラリとジェネレータをインストールするcmdを開いて、次のコマンドを入力しま...

CSS クリアフロートクリア:both サンプルコード

今日はフロートのクリアについてお話します。フロートのクリアについてお話する前に、フロートとは何かを理...

divとspanの違いと使い方

目次1. DIVとSPANの違いと特徴2. スパンタグの概要3. 拡大と改善4. 凡例の効果の実証例...

MySQL で MHA アーキテクチャのデプロイメントを構築する手順

目次マハ1. MAHアーキテクチャの概要2. 適用可能なシナリオ3. MHAの動作原理4. MHAの...

Windows 10 での MySQL 5.7.19 インストール チュートリアル MySQL のルート パスワードを忘れた場合の変更方法

MySQL 5.7.19のインストールを例に挙げると、まずダウンロードしますもちろん、最初に行うこと...

動的画像読み込み技術の応用とjquery.lazyloadプラグインの使用例

アプリケーション例ウェブサイト http://www.uhuigou.net画像の動的読み込みは目新...

ウェブページの最も基本的なコード

◆お気に入りに追加例示するクリックすると、ブラウザのお気に入りメニューにウェブサイトが追加されます...

Nginxはctxを使用してデータ共有とコンテキスト変更機能を実現します。

環境: init_worker_by_lua、set_by_lua、rewrite_by_lua、a...

Linux サービス管理の 2 つの方法、service と systemctl の詳細な説明

1.サービスコマンドサービスコマンドは実際には/etc/init.dディレクトリに移動し、関連プログ...

Linux で測位バックグラウンド サービスが時々クラッシュする問題の解決方法

問題の説明最近のバックグラウンドサービスでは、特定の命令の要求データをディスクに保存する新しい機能が...

マウスのドラッグ効果を実現するJavaScript

この記事では、マウスドラッグ効果を実現するためのJavaScriptの具体的なコードを参考までに紹介...