Я пытаюсь проверить 4 поля. Последние два имеют правильное поведение валидации, но первые два не работают. Если я ничего не введу - форма все равно будет подтверждена.
Вот 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>
Я сделал полдюжины форм точно так же, как это безупречно, но я не могу понять, почему есть проблема с первыми двумя полями, которые не следуют правилам валидации. Любая помощь?