I have got a problem with my form.
For the telephone field, I would like that is not required but in the right format if it's filled (10 digits).
If the form is empty and if it's validated, why the green image is displayed (validClass) ? How to make for that the image is displayed only if the field is completed and in the right format ?
Leave the form blank and confirm to see : http://jsfiddle.net/Xroad/Y3GJr/
$('form').find('.error-message').hide();
$.validator.setDefaults({
errorClass: 'error-image',
validClass: 'ok-image',
errorElement: 'span',
errorContainer: '#invalid-empty'
});
$("#form-general").validate({
rules: {
form_firstname: {
minlength: 2,
maxlength: 25,
regex: /^[-a-zéèçàâA-Z)]+$/
},
form_name: {
minlength: 2,
maxlength: 25,
regex: /^[-a-zéèçàâA-Z)]+$/
},
form_email: {
email: true
},
form_telephone: {
digits: true,
minlength: 10,
maxlength: 10
}
},
messages: {
form_firstname: {
required: "",
minlength: "Please enter at least {0} characters",
regex: "Please avoid spaces and special characters"
},
form_name: {
required: "",
minlength: "Please enter at least {0} characters",
regex: "Please avoid spaces and special characters"
},
form_email: {
required: "",
email: "Your email address must be in the format name@domaine.com"
},
form_telephone: {
required: false,
minlength: "Please enter 10 digits",
maxlength: "Please enter 10 digits",
digits: "Please use only numbers"
},
form_message: ""
},
submitHandler: function(form) {
$('.btn-validate-group:visible').hide();
$('.send-wait').fadeIn(300);
$.ajax({
url: form.action,
type: form.method,
data: $(form).serialize(),
success : function() {
$('.send-wait').hide();
$('.send-success').fadeIn(300);
},
error : function(){
$('.send-wait').hide();
$('.send-error').fadeIn(300);
}
});
return false;
}
});
$.validator.addMethod(
"regex",
function(value, element, regexp) {
var re = new RegExp(regexp);
return this.optional(element) || re.test(value);
});