2011-03-28 3 views
0

J'essaie de valider quatre champs différents. Les deux derniers ont la validation se comportent correctement, mais les deux premiers ne fonctionnent pas (ils devraient seulement être exigés). Si j'appuie sur submit sans rien entrer, seuls les deux derniers champs affichent des erreurs.La validation jQuery ne fonctionne pas correctement

Voici le jQuery en question:

 $("#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" 
       } 
      } 
     }); 

Voici la forme réelle elle-même:

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

J'ai même essayé d'ajouter la classe requise pour chaque champ. Je sais que ce n'est pas non plus un problème de gestion des messages. Les deux premiers champs ne suivent tout simplement pas les règles de validation. De l'aide?

Répondre

0

Si vous souhaitez simplement valider que les deux premiers champs sont requis, vous pouvez définir une classe = "required" dans leurs champs de saisie respectifs et définir advRetailerName: "required" dans votre jquery. Voici la documentation à valider: http://docs.jquery.com/Plugins/Validation

+0

Voici une démo de validation: http://jquery.bassistance.de/validate/demo/ – Notorious2tall

0

Cela ressemble à un bug dans le plugin de validation. Vous ne comprenez peut-être pas l'attribution de règles de style complexe lorsque vous demandez uniquement le paramètre "requis"? Avez-vous essayé la manière simple:

rules: { 
    advRetailerName: "required", 
    (...) 
} 
1

essayer comme ça

$.validator.addClassRules({ 
     advPhone: { 
      required: true, 
      phoneUS: true 
     }, 
     advEmail: { 
      required: true, 
      email: true 
     } 
}); 

$("#advertisePost").validate(); 

puis ajouter la classe requise pour les deux premiers

Sinon, vous pouvez pouvez simplement faire la ligne de validation et ajouter des classes email et requis pour les deux dernières

Questions connexes