0

JSFIDDLEへのリンクは次のとおりです。

こんにちは

JQueryバリデータープラグインとそのAPIを学んでいます。私はもうすぐそこにいますが、実装したいソリューションに関する確かな例を見つけることができないようです。私は多くのオンライン検索を行い、断片を見つけましたが、これをうまく説明するものは何もありません。

私はこれらのフィールドを持つ単純なフォームを持っています:

  • ファーストネーム
  • 苗字
  • Eメール
  • 電話

現在、これらのフィールドは、カスタムメソッドやエラーメッセージなしで検証されています。したがって、フォームが空のフィールドで送信された場合、「required*」がポップアップ表示されます。

私がやりたいのは、フィールドが空白/空かどうかをチェックするだけでなく、フィールドを検証することです。たとえば、次のようになります。

ファーストネーム:

  1. フィールドが空白/空ではありません
  2. フィールドに英数字が含まれていません

電話:

  1. フィールドが空白/空ではありません
  2. フィールドには数字のみが含まれます

私はカスタムバリデーターメソッドの実装に非常に慣れていないので、それに応じて正しいエラーメッセージを表示する方法がわかりません。したがって、電話フィールドが空白ではなく、コンテナの数字以外の文字である場合は、フラグを付けて、このフィールドは数字のみを受け入れるというエラーメッセージを表示したいと思います。

現在、バリデーターのメッセージオブジェクト内に「required *」というエラーメッセージが表示されていますが、エラーメッセージを詳細なレベルで実装する方法がわかりません。

大変お世話になりましたことをお詫び申し上げます。誰かが私を正しい方向に向けてくれれば幸いです。ありがとうございました

JSFIDDLEへのリンクは次のとおりです。

    <div class="wrapper">

        <form id="contactForm" action="" method="post" enctype="multipart/form-data">
            <div class="fieldGroup">
           <!--  FIRST NAME --->     
               <lable for="firstname">First Name: </label>
               <input type="text" id="firstname" name="firstname" size="25" maxlength="25" >
           </div>
            <!--  LAST NAME  -->   
            <div class="fieldGroup">
               <lable for="lastname">Last Name: </label>
               <input type="text" id="lastname" name="lastname" size="25" maxlength="25" >  
            </div>  
            <!--  EMAIL  -->    
            <div class="fieldGroup">
               <lable for="email">Email: </label>
               <input type="text" id="email" name="email" size="25" maxlength="40" >     
            </div>   
            <!--  PHONE  -->    
            <div class="fieldGroup">
               <lable for="lastname">Phone: </label>
               <input type="text" id="phone" name="phone" size="12" maxlength="12" >   
               xxx-xxx-xxxx
            </div>        

            <div class="fieldGroup">
               <input type="submit" id="SubmitBtn" value="Submit" >  
               <input type="reset" id="ResettBtn" value="Reset" >                
            </div>            

        </form>

    </div>

JAVASCRIPT

    (function($,W,D)
    {
        var JQUERY4U = {};

        JQUERY4U.UTIL =
        {
            setupFormValidation: function()
            {
                //form validation rules
                $("#contactForm").validate({
                    rules: {
                        firstname: {
                            required: true,
                            chkData: true
                        },
                        lastname: {
                            required: true,
                            minlength: 2,
                            maxlength: 15               
                        },
                        address1:{
                            required: true,
                            minlength: 8,
                            maxlength: 30               
                        },
                        city:{
                            required: true,
                            minlength: 8,
                            maxlength: 25           
                        },                  
                        state:{
                            required: true          
                        },
                        zipcode:{
                            required: true,
                            minlength: 5,
                            maxlength: 10   
                        },
                        phone: {
                            required: true,
                            minlength: 10,
                            maxlength: 12                       
                        },
                        email:
                        {
                            required: true,
                            email: true
                        }                   
                    },
                    messages: {
                        firstname: "required *",
                        lastname: "required *",
                        address1: "required *",
                        city: "required *",
                        state: "required *",
                        zipcode: "required *",
                        phone: "required *",
                        email: "required *",
                    },
                    submitHandler: function(form) {
                        form.submit();
                    }
                });
            }


        }

        //when the dom has loaded setup form validation rules
        $(D).ready(function($) {

                $.validator.addMethod("chkData",
                function(value, element){
                    alert(value);
                },"SORRY");
            JQUERY4U.UTIL.setupFormValidation();
        });

    })(jQuery, window, document);
4

1 に答える 1

1

コードは必要以上に複雑でした。

$(document).ready(function () {

    $("#contactForm").validate({
        rules: {
            firstname: {
                required: true,
                alphanumeric: true
            },
            lastname: {
                required: true,
                minlength: 2,
                maxlength: 15
            },
            address1: {
                required: true,
                minlength: 8,
                maxlength: 30
            },
            city: {
                required: true,
                minlength: 8,
                maxlength: 25
            },
            state: {
                required: true
            },
            zipcode: {
                required: true,
                minlength: 5,
                maxlength: 10
            },
            phone: {
                required: true,
                phoneUS: true
            },
            email: {
                required: true,
                email: true
            }
        },
        messages: {
            firstname: {
                required: "required *",
                alphanumeric: "custom alphanumeric message"
            },
            lastname: "required *",
            address1: "required *",
            city: "required *",
            state: "required *",
            zipcode: "required *",
            phone: "required *",
            email: "required *",
        }
    });

});

デモ:http: //jsfiddle.net/7uDXQ/

1) alphanumericルールにはファイルphoneUSを含める必要があります。additional-methods.js

2)

「現在、バリデーターrequired *のオブジェクト内にエラーメッセージがありmessages ますが、エラーメッセージを詳細なレベルで実装する方法がわかりません。」

カスタムメッセージは、次のような形式で簡単に実装されますrules:

messages: {
    firstname: {
        required: "custom required *",
        alphanumeric: "custom alphanumeric message"
    },
}

そうでなければ、これだけを行うと...

messages: {
    firstname: "custom required *",
}

次に、フィールド上のすべてのルールのすべてのメッセージが、この同じカスタムメッセージを共有します。firstname

3)submitHandlerのような有効なフォームで何かを行う必要がない限り、コールバック関数 を指定する必要はありませんajax。それ以外の場合、デフォルトでは、フォームはsubmit有効なフォームに対して通常の処理を実行します。jsFiddleのコードを上記のコードと比較してください。

4) そのようなルールはないchkDataので削除しました。これがカスタムルールである場合は、上記の私の項目2に従ってカスタムメッセージを適用します。

于 2013-03-03T21:06:53.393 に答える