Ваша последовательность проверки ошибок выглядит как капча -> проверка jQuery.Вот почему вы не видите другое сообщение об ошибке, потому что вы возвращаетесь, если приходит сообщение об ошибке с помощью капчи.
Я обновил ваш код Javascript, поэтому сначала выполняется проверка JQuery, и, если она прошла успешно, выполняется проверка с проверкой.
var allowSubmit = false;
function captchaCb(response) {
allowSubmit = true;
console.log('this is reCaptcha response: ' + response);
}
function checkCaptcha() {
console.log('checkCaptcha');
if(allowSubmit) return true;
// e.preventDefault();
$('#grecaptchaError').text('Please confirm that you are not a robot');
return false;
}
$("#form-submit").click(function() {
$("#contact-form").submit();
});
$("#contact-form").validate({
rules: {
name: {
required: true,
minlength: 2,
},
email: {
required: true,
email: true,
},
budget: {
required: true,
},
message: {
required: true,
minlength: 5,
},
},
messages: {
name: {
required: "come on, you have a name don't you?",
minlength: "your name must consist of at least 2 characters"
},
email: {
required: "no email, no message"
},
budget: {
required: "Please select your budget"
},
message: {
required: "um...yea, you have to write something to send this form.",
minlength: "thats all? really?"
}
},
errorPlacement: function(error, element) {
if (element.attr("name") == "name" ) {
error.appendTo('#nameError');
}
if (element.attr("name") == "email" ) {
error.appendTo('#emailError');
}
if (element.attr("name") == "budget" ) {
error.appendTo('#budgetError');
}
if (element.attr("name") == "g-recaptcha-response" ) {
error.appendTo('#grecaptchaError');
}
if (element.attr("name") == "message" ) {
error.appendTo('#messageError');
}
},
submitHandler: function(form) {
if (!checkCaptcha()) {
console.log('captcha error occurs ');
return;
}
$.ajax({
//dataType: "jsonp",
url: "example.com",
data: $("#contact-form").serialize()
}).done(function() {
//callback which can be used to show a thank you message
//and reset the form
$("#contact-form").hide();
$(".form-thank-you").fadeIn("400");
});
return false; //to stop the form from submitting
}
});