| Current Path : /var/www/rustam/data/www/kran-balka.com/exform/ |
| Current File : /var/www/rustam/data/www/kran-balka.com/exform/exform.js |
(function ($) {
$.fn.exform = function (options) {
// Установка значений по умолчанию для параметров
var settings = $.extend(
{
path: '/exform/',
name: true,
phone: true,
email: true,
message: true,
theme: 'mform',
wrapper: 'body',
},
options
);
var wrapperSelector = settings.wrapper === 'body' ? settings.wrapper : '.' + settings.wrapper;
var exformWrapper = '.exform-wrapper.' + settings.theme;
// Инициализация формы
if (settings.wrapper === 'body') {
$(this).click(initForm);
} else {
initForm();
}
// Подключение зависимостей
function initDependencies() {
var cssThemePath = settings.path + 'themes/' + settings.theme + '/css/exform.css';
if (!$('head').find(`link[href="${cssThemePath}"]`).length) {
$('head').append(`<link rel="stylesheet" type="text/css" href="${cssThemePath}" />`);
}
//Если есть капча, то подключаем скрипт.
//Получение данных по капчи из exform.php
$.post(settings.path + 'exform.php', { getYandexCaptchaData: true, mfPath: settings.path }, function (response) {
var response = $.parseJSON(response);
if (response.enableYandexCaptcha) {
setTimeout(() => {
$('head').append(`<script src="https://smartcaptcha.yandexcloud.net/captcha.js" defer></script>`); //скрипт капчи
}, 1000);
}
});
}
// Функция для инициализации формы
function initForm() {
initDependencies();
if ($(exformWrapper).length === 0) {
var formParams = {
initForm: true,
mfPath: settings.path,
mfTheme: settings.theme,
};
if (settings.wrapper === 'body') {
$('body').append('<div class="exform-bg"></div>');
$('.exform-bg').fadeTo(200, 0.3, function () {
$.post(settings.path + 'exform.php', formParams, renderForm);
});
} else {
$.post(settings.path + 'exform.php', formParams, renderForm);
}
}
return false;
}
// Отображения формы
function renderForm(response) {
if (settings.wrapper === 'body') {
$('body').append($(response));
setupForm();
centerForm();
$(exformWrapper).show();
} else {
$('.' + settings.wrapper).html(response);
$(exformWrapper).css({ display: 'block' });
$(exformWrapper + ' .mf-submit input[type=button]').remove();
setupForm();
}
if ($(exformWrapper + '.finmsg p').length > 0) {
setTimeout(hideForm, 4000);
}
}
// Настройка событий формы
function setupForm() {
var thisForm = $(exformWrapper + ' form[name="exform"]');
if (thisForm.length > 0) {
clearFormInputs();
$(exformWrapper + ' input[name="mfCurrentUrl"]').val(window.location.href);
$('.exform-bg, ' + exformWrapper + ' .mf-submit input[type="button"]').click(hideForm);
$(exformWrapper + ' form[name="exform"]').submit(submitForm);
}
}
// Обработка отправки формы
function submitForm(event) {
event.preventDefault();
let form = $(this);
let error = false;
//Если есть капча, то подключаем скрипт. //Получение данных по капчи из exform.php
if (form.find('input[name="smart-token"]').length) {
let element = form.find('input[name="smart-token"]');
if (!element.val()) {
alert('Вы не прошли проверку YandexCaptcha! Попробуйте ещё раз');
error = true;
}
}
if (form.find('input[name="confirmPolitic"]').length) {
if (!form.find('input[name="confirmPolitic"]').is(':checked')) {
alert('Вы не согласились с политикой конфиденциальности!');
error = true;
}
}
if (!error) {
// Если проверка пройдена - отправляем форму
if ($(exformWrapper + ' input[name="userName"]').val().length === 0) {
$(exformWrapper + ' .mf-submit button[type="submit"]').attr('disabled', 'disabled');
$.post(settings.path + 'exform.php', $(exformWrapper + ' form[name="exform"]').serialize(), function (response) {
if (settings.wrapper === 'body') {
$(exformWrapper).remove();
renderForm(response);
} else {
$('.' + settings.wrapper).html(response);
$(exformWrapper).css({ display: 'block' });
$(exformWrapper + ' .mf-submit input[type=button]').remove();
setupForm();
$('body').append('<div class="exform-bg"></div>');
$('.exform-bg').fadeTo(200, 0.3);
$(exformWrapper + '.finmsg')
.fadeIn(500)
.delay(1000)
.fadeOut(1000, function () {
location.reload();
});
}
});
} else {
hideForm();
}
} else {
// Если проверка не пройдена - отменяем отправку форму
return false;
}
}
// Очистка полей ввода
function clearFormInputs() {
if (settings.name) $(exformWrapper + ' .mfMame').remove();
if (settings.phone) $(exformWrapper + ' .mfPhone').remove();
if (settings.email) $(exformWrapper + ' .mfEmail').remove();
if (settings.message) $(exformWrapper + ' .mfMessage').remove();
}
// Центрирование формы на экране
function centerForm() {
var wrapperWidth = parseInt($(exformWrapper).css('width'));
var wrapperHeight = parseInt($(exformWrapper).css('height'));
$(exformWrapper).css({
position: 'fixed',
left: '50%',
top: '50%',
'margin-left': '-' + wrapperWidth / 2 + 'px',
'margin-top': '-' + wrapperHeight / 2 + 'px',
});
}
// Скрытие формы
function hideForm() {
$('.exform-bg, ' + exformWrapper).fadeOut(500, function () {
$(this).remove();
});
}
};
})(jQuery);