jQuery(document).ready(function ($) { $('form.ajax-form .img-captcha').on('click', function () { var src_captcha = $(this).attr('src'); $(this).attr('src', src_captcha + '?rand=' + Math.random()); }); $.validate({ // параметры валидации form: 'form.ajax-form', // modules: 'sanitize, file', // обычная проверка, без блокировки кнопки <Отправить> modules: 'sanitize, toggleDisabled, file', // проверка с блокировкой кнопки <Отправить> lang: 'ru', // язык сообщений об ошибках disabledFormFilter : 'form.toggle-disabled', // validateOnBlur: false, // отключить проверку данных "налету" // errorElementClass: '', // класс для полей с ошибками // errorMessageClass: '', // класс для сообщений с ошибками // errorMessagePosition: 'top', // вывод ошибок сверху формы // scrollToTopOnError: false, // пролистывать или нет страницу до ошибок addValidClassOnAll: true, onElementValidate: function (valid, $el, $form, errorMess) { $el.filter('input[type=file]').change(function () { var filename = $(this).val().replace(/.*\\/, ""); if ($form.find('.attach-filename').length) { $form.find('.attach-filename').html(filename); } else { $('
' + filename + '
').appendTo($(this).parent()); } setTimeout(function () { $el.filter('input[type=file]').validate(); }, 0); }); }, // отправка данных onSuccess: function ($form) { var formdata = new FormData($form.get(0)); // создаем новый экземпляр объекта и передаем ему нашу форму formdata.append('Recipient', recipient_mail); $.ajax({ url: $form.attr('action') + 'email-send.php', type: $form.attr('method'), processData: false, // важно - убираем преобразование строк по умолчанию contentType: false, // важно - убираем форматирование данных по умолчанию data: formdata, success: function (result) { $form.find('.img-captcha').click(); if (result == 1) { // успешная отправка формы $form.get(0).reset(); if ($form.hasClass('toggle-disabled')) { $form.find('button[type=submit]').addClass('disabled').prop('disabled', true); // блокировка кнопки <Отправить> } $form.find('.form-result-send').removeClass('form-result-error').addClass('form-result-ok').html('Ваше сообщение было отправлено!').fadeIn().delay(3000).fadeOut('slow'); $form.find('input[type=file]').change(); } if (result == 0) { // ошибка при отправке формы $form.get(0).reset(); if ($form.hasClass('toggle-disabled')) { $form.find('button[type=submit]').addClass('disabled').prop('disabled', true); // блокировка кнопки <Отправить> } $form.find('.form-result-send').removeClass('form-result-ok').addClass('form-result-error').html('Ошибка при отправке сообщения! Повторите позже!').fadeIn().delay(3000).fadeOut('slow'); $form.find('input[type=file]').change(); } if (result == 2) { // неверно заполнена капча if ($form.hasClass('toggle-disabled')) { $form.find('button[type=submit]').addClass('disabled').prop('disabled', true); // блокировка кнопки <Отправить> } $form.find('.form-captcha').removeClass('valid').addClass('error').val('').focus(); $form.find('.form-result-send').removeClass('form-result-ok').addClass('form-result-error').html('Неверно введен код!').fadeIn().delay(3000).fadeOut('slow'); } } }); return false; } }); });