$('.form').validate({ rules: { name: { required: true, minlength: 2, maxlength: 40, }, email: { required: false, email: true, }, message: { required: true, }, }, messages: { name: 'Введите имя', email: { email: 'Введите email', }, message: 'Введите сообщение', }, errorPlacement: function(error, element) { error.insertAfter(element); }, submitHandler: function(form, event) { grecaptcha.ready(function() { grecaptcha .execute('6LdH2tIZAAAAAKac9amh41DcAW5_FTLLjp9BCnIL', {action: 'submit'}) .then(function(token) { sendAjax(form, event); }); }); } }); function sendAjax(form, event) { var $form = $(form), $btn = $form.find('.btn--submit'); $btn.prop('disabled', 'disabled'); $.ajax({ url: $form.attr('action'), type: 'POST', data: $form.serialize(), dataType: 'json' }) .done(function(result) { if (result) { $('#form_result').html('

'+result.comment+'

'+result.message+'

'); } }) .fail(function() { $('#form_result').html('

Произошла ошибка, попробуйте снова

'); }) .always(function(result) { setTimeout(function() { $btn.removeProp('disabled'); if (result.status == 'success') { $btn.prop('disabled', 'disabled'); } }, 1000); }); }