2011-03-27 17 views
2

4つのフィールドを検証しようとしています。最後の2つは正しく動作しますが、最初の2つは機能しません。私が何も入力しなければ、フォームはまだ検証されます。ここでjQueryの検証の問題

は方法のためのjQueryの:ここでは実際のフォームそのものだ

jQuery.validator.addMethod("phoneUS", function(phone_number, element) { 
      phone_number = phone_number.replace(/\s+/g, ""); 
      return this.optional(element) || phone_number.length > 9 && 
      phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/); 
     }, "Not a valid phone number"); 
     $("#advertisePost").validate({ 
      rules: { 
       advRetailerName: { 
        required: true 
       }, 
       advName: { 
        required: true 
       }, 
       advPhone: { 
        required: true, 
        phoneUS: true 
       }, 
       advEmail: { 
        required: true, 
        email: true 
       }   
      }, 
      messages:{ 
       advRetailerName: { 
        required: "This is required." 
       }, 
       advName: { 
        required: "This is required." 
       }, 
       advPhone: { 
        required: "This is required.", 
        phoneUS: "This is an invalid phone number." 
       }, 
       advEmail: { 
        required: "This is required", 
        email: "This is an invalid email" 
       } 
      } 
     }); 

<form action="php/advertisePost.php" method="POST" id="advertisePost"> 
<table> 
<tr> 
    <td>Retailer Name</td><td><input type="text" id="advRetailerName" name="advRetailerName"/><br/><label for="advRetailerName" class="error" generated="true"></label></td> 
</tr> 
<tr> 
    <td>Your Name</td><td><input type="text" id="advName" name="advName"/><br/><label for="advName" class="error" generated="true"></label></td> 
</tr> 
<tr> 
    <td>Phone Number</td><td><input type="text" id="advPhone" name="advPhone"/><br/><label for="advPhone" class="error" generated="true"></label></td> 
</tr> 
<tr> 
    <td>Email Address</td><td><input type="text" id="advEmail" name="advEmail"/><br/><label for="advEmail" class="error" generated="true"></label></td> 
</tr> 
</table> 
    <input type="button" value="Submit" id="advSubmit"/> 
</form> 

は、私は完璧にちょうどこのような半ダースのフォームを作ったが、私は見ることができませんなぜ最初の2つのフィールドが検証ルールに従わないかに問題があります。どんな助け?

+0

jslintはjavascriptが構文上問題ないことを確認しています - どのバージョンのjqueryを使用していますか? – amelvin

答えて

0

私はこのプラグインを簡単に使用しました。私が覚えていることから、空のフィールドをチェックするためにバリデーターに入力エレメントに "必須"クラスを追加するだけです。