2009-07-15 15 views
3

私自身の検証を書くのではなく、代わりにJQueryを使うと思っていましたが、これも簡単ではありません。私は誰かが答えることを願っているいくつかの質問があります。まず、エラーメッセージはsubmitをクリックすると表示されます。各フィールドを終了した後、それらを表示させるにはどうすればよいですか?検証のための私のコードはここにあります。JQueryとvalidateプラグイン

コード:

$(document).ready(function(){ 
    $("#orderForm").validate({ 
     rules: { 
      shipFirstName: { 
       required: true, 
      }, 
      shipFamilyName: { 
       required: true, 
      }, 
      shipPhoneNumber: { 
       required: true, 
      }, 
      shipStreetName: { 
       required: true, 
      }, 
      shipCity: { 
       required: true, 
      }, 
      billEmailAddress: { 
       required: true, 
      }, 
      billPhoneNumber: { 
       required: true, 
      }, 
      billCardNumber: { 
       required: true, 
      }, 
      billCardType: { 
       required: true, 
      }, 
     }, //end of rules 
    }); // end of validate 
    }); //end of function 

これは、フォームのための私のHTMLコードです。私はスタイリングを表示しませんが、赤いフォントを表示するように変更しました。

コード:

<form id="orderForm" method="post" action="x"> 
     <table id="formTable" cellpadding="5"> 
     <tr> 
      <td> 
      <h3>Shipping and Billing Information</h3> 
      </td> 
      <td>&nbsp;</td> 
     </tr> 
     <tr> 
      <td><label for="shipFirstname">First Name</label></td> 
      <td><input id="shipFirstName" type="text" name="shipFirstName" maxlength= 
      "30" /></td> 
     </tr> 
     <tr> 
      <td><label for="shipFamilyName">Surname</label></td> 
      <td><input id="shipFamilyName" type="text" name="shipFamilyName" maxlength="30" /></td> 
     </tr> 
     <tr> 
      <td><label for="shipPhoneNumber">Contact Telephone Number</label></td> 
      <td><input id="shipPhoneNumber" type="text" name="shipPhoneNumber" maxlength="30" /></td> 
     </tr> 
     <tr> 
      <td><label for="shipStreetName">Street Name</label></td> 
      <td><input id="shipStreetName" type="text" name="shipStreetName" maxlength="30" /></td> 
     </tr> 
     <tr> 
      <td><label for="shipCity">City</label></td> 
      <td><input id="shipCity" type="text" name="shipCity" maxlength="30" /></td> 
     </tr> 
     <tr> 
      <td><label for="shipPostalCode">Postal Code</label></td> 
      <td><input id="shipPostalCode" type="text" name="shipPostalCode" maxlength="30" /></td> 
     </tr> 
     <tr> 
      <td><label for="billEmailAddress">Email address</label></td> 
      <td><input id="billEmailAddress" type="text" name="billEmailAddress" maxlength="30" /></td> 
     </tr> 
     <tr> 
      <td><label for="billPhoneNumber">Contact Telephone Number</label></td> 
      <td><input id="billPhoneNumber" type="text" name="billPhoneNumber" maxlength="30" /></td> 
     </tr> 
     <tr> 
      <td><label for="fidelityCardNumber">Fidelity card</label></td> 
      <td><input id="fidelityCardNumber" type="text" name="fidelityCardNumber" maxlength="30" /></td> 
     </tr> 
     <tr> 
      <td><label for="billCardNumber">Credit Card Number</label></td> 
      <td><input id="billCardNumber" type="text" name="billCardNumber" maxlength="30" /></td> 
     </tr> 
     <tr> 
      <td><label for="billCardType">Credit Card Type</label></td> 
      <td><select id="billCardType" name="billCardType"> 
      <option value="..."> 
       Choose your card... 
      </option> 
      <option value="visa"> 
       Visa 
      </option> 
      <option value="mastercard"> 
       Mastercard 
      </option> 
      </select></td> 
     </tr> 
     <tr> 
      <td><label for="instructions">Instructions</label></td> 
      <td> 
      <textarea id="instructions" name="instructions" rows="8" cols="30"> 
Enter your requirements here or comments. 
</textarea></td> 
     </tr> 
     <tr> 
      <td colspan="2"><input id="submit" type="submit" name="Submit" value="Submit" </td> 
     </tr> 
     </table> 
    </form> 

私はまた、郵便番号や忠実カードのregexsを使用したいです。これらをスクリプトに組み込むにはどうすればよいですか?これは正しいですか?どこに置くの?

$.validator.addMethod('shipPostalCode', function (value) { 
    return /^[A-Z]{2}\d{1,2}\s\d{1,2}[A-Z]{2}$/.test(value); 
    }, 'Please enter a valid Postal Code'); 
    $.validator.addMethod('fidelityCardNumber', function (value) { 
    return /^[A-Z]{1}([A-Z]|\d){4}\s?([A-Z]|\d){5}\s?([A-Z]|\d){3}\d{1}(\!|\&|\@|\?){1}$/.test(value); 
    }, 'Please enter a valid card number'); 

最終的なものです。このスクリプトを外部のjsファイルに簡単に入れることはできますか?私はできるだけ多くのHTMLファイルを取得しようとしています。

おかげ

+0

はい、あなたは簡単に静かに外部のjsファイルに追加することができます。それを動作させるためのもので、jqueryでフォームの検証を試していません。ドキュメントを調べるだけで、フォームフィールドにはonfocusoutを、チェックボックスとラジオボタンにはonclickを使うことができます。申し訳ありませんが私はより多くの助けになることができます – Aduljr

+0

私はフィールドからクリックすると表示されないエラーメッセージに関する問題を整理することができました。私はこのコードを使用する: $を( "...")({onfocusout :機能(要素){ this.element(エレメント);} を})検証します。 私はまだ正規表現でカスタムメソッドに固執しています –

答えて

1

これは動作するはずですが、あなたは最初の形式で何かを記入する必要があります。ファーストネームに何かを書き込んでから、それを削除してフォーカスを変更してください。例から

jQuery.validator.addClassRules({ 
    name: { 
    required: true, 
    minlength: 2 
    }, 
    zip: { 
    required: true, 
    digits: true, 
    minlength: 5, 
    maxlength: 5 
    } 
}); 

http://docs.jquery.com/Plugins/Validation/Validator/addClassRules#rules

Lastely、http://docs.jquery.com/Plugins/Validationで:

+0

私のスクリプトはうまくいくはずですかaduljrの解決策ですか?私はあなたが言ったことをやっているが、それはあなたが提出をクリックしない限りまだ動作しない –

1

'addMethod'呼び出しを使用すると、実際には、 'validate'メソッド呼び出しで使用できる 'タイプ'の検証が追加されます。

$.validator.addMethod('postalCode', 
    function (value, element) 
    { 
      return this.optional(element) || /^[A-Z]{2}\d{1,2}\s\d{1,2}[A-Z]{2}$/.test(value); 
    }, 'Please enter a valid Postal Code'); 


$.validator.addMethod('creditCardNumber', 
    function(value, element) 
    { 
     return this.optional(element) || /^[A-Z]{1}([A-Z]|\d){4}\s?([A-Z]|\d){5}\s?([A-Z]|\d){3}\d{1}(\!|\&|\@|\?){1}$/.test(value); 
    }, 'Please enter a valid card number'); 

他の検証コードがある同じJSファイルにこのコードを挿入します。その後

のために、validateメソッドの呼び出しを変更します。

$(document).ready(function(){ 
    $("#orderForm").validate({ 

     rules: { 

        //Your other rules 

        shipPostalCode: { postalCode: true }, 
        fidelityCardNumber : { creditCardNumber : true } 

       } 

    }) 
    } 
); 
2

$(ドキュメント).ready(関数(){ $( "#のorderForm")。検証({ onfocusout:真、 ルール:{ shipFirstName:{ が必要:真、 }、 shipFamilyName:{ が必要:真、 }、 shipPhoneNumber:{ が必要:真、 }、 shipStreetName :{ が必要:真、 を}、 shipCity:{必要 :真、 }、 billEmailAddressは:{ が必要:真、 }、 billPhoneNumber:{ が必要:真、 }、 billCardNumber:{ が必要:真、 }、 billCardType:{ 要する:ルール の真、 }、 } //端})。 // valid end of }); //関数の終わり

これは、フィールドを離れるたびに自動的にそれを検証するようにします。 :)

0
$('#myform').validate({ onfocusout: function(element) { $(element).valid(); } }; 

これも機能します。

0
jQuery.validator.addMethod("stateUS", function(value, element) { 
    return this.optional(element) || 
    /^(?:A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])*$/.test(value); 
}, "The specified US State is invalid");` 

米国の州とDCの2つの略語を検証するため。

は上記と同じですが、十分ではない担当者にコメントを募集 - 塩辛いの答えは、それが有効な設定ではありません、しかし

onfocusout: true 

を使用するドキュメントに応じて(と、それをしようと)すると言います。 http://jqueryvalidation.org/validate

ブール値trueは有効な値ではありません。

この値に真実度を設定している場合、Alistairの回答と同じように、要素とイベントの2つの引数を取得するコールバック関数を設定する必要があります。