Last active
March 31, 2019 17:43
-
-
Save sidor1989/24386d9aff4fe81fbb1e547ac589e542 to your computer and use it in GitHub Desktop.
validateForm.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
console.log('script.js подключен !!!'); | |
/* | |
jQuery Masked Input Plugin | |
Copyright (c) 2007 - 2015 Josh Bush (digitalbush.com) | |
Licensed under the MIT license (http://digitalbush.com/projects/masked-input-plugin/#license) | |
Version: 1.4.1 | |
*/ | |
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){var b,c=navigator.userAgent,d=/iphone/i.test(c),e=/chrome/i.test(c),f=/android/i.test(c);a.mask={definitions:{9:"[0-9]",a:"[A-Za-z]","*":"[A-Za-z0-9]"},autoclear:!0,dataName:"rawMaskFn",placeholder:"_"},a.fn.extend({caret:function(a,b){var c;if(0!==this.length&&!this.is(":hidden"))return"number"==typeof a?(b="number"==typeof b?b:a,this.each(function(){this.setSelectionRange?this.setSelectionRange(a,b):this.createTextRange&&(c=this.createTextRange(),c.collapse(!0),c.moveEnd("character",b),c.moveStart("character",a),c.select())})):(this[0].setSelectionRange?(a=this[0].selectionStart,b=this[0].selectionEnd):document.selection&&document.selection.createRange&&(c=document.selection.createRange(),a=0-c.duplicate().moveStart("character",-1e5),b=a+c.text.length),{begin:a,end:b})},unmask:function(){return this.trigger("unmask")},mask:function(c,g){var h,i,j,k,l,m,n,o;if(!c&&this.length>0){h=a(this[0]);var p=h.data(a.mask.dataName);return p?p():void 0}return g=a.extend({autoclear:a.mask.autoclear,placeholder:a.mask.placeholder,completed:null},g),i=a.mask.definitions,j=[],k=n=c.length,l=null,a.each(c.split(""),function(a,b){"?"==b?(n--,k=a):i[b]?(j.push(new RegExp(i[b])),null===l&&(l=j.length-1),k>a&&(m=j.length-1)):j.push(null)}),this.trigger("unmask").each(function(){function h(){if(g.completed){for(var a=l;m>=a;a++)if(j[a]&&C[a]===p(a))return;g.completed.call(B)}}function p(a){return g.placeholder.charAt(a<g.placeholder.length?a:0)}function q(a){for(;++a<n&&!j[a];);return a}function r(a){for(;--a>=0&&!j[a];);return a}function s(a,b){var c,d;if(!(0>a)){for(c=a,d=q(b);n>c;c++)if(j[c]){if(!(n>d&&j[c].test(C[d])))break;C[c]=C[d],C[d]=p(d),d=q(d)}z(),B.caret(Math.max(l,a))}}function t(a){var b,c,d,e;for(b=a,c=p(a);n>b;b++)if(j[b]){if(d=q(b),e=C[b],C[b]=c,!(n>d&&j[d].test(e)))break;c=e}}function u(){var a=B.val(),b=B.caret();if(o&&o.length&&o.length>a.length){for(A(!0);b.begin>0&&!j[b.begin-1];)b.begin--;if(0===b.begin)for(;b.begin<l&&!j[b.begin];)b.begin++;B.caret(b.begin,b.begin)}else{for(A(!0);b.begin<n&&!j[b.begin];)b.begin++;B.caret(b.begin,b.begin)}h()}function v(){A(),B.val()!=E&&B.change()}function w(a){if(!B.prop("readonly")){var b,c,e,f=a.which||a.keyCode;o=B.val(),8===f||46===f||d&&127===f?(b=B.caret(),c=b.begin,e=b.end,e-c===0&&(c=46!==f?r(c):e=q(c-1),e=46===f?q(e):e),y(c,e),s(c,e-1),a.preventDefault()):13===f?v.call(this,a):27===f&&(B.val(E),B.caret(0,A()),a.preventDefault())}}function x(b){if(!B.prop("readonly")){var c,d,e,g=b.which||b.keyCode,i=B.caret();if(!(b.ctrlKey||b.altKey||b.metaKey||32>g)&&g&&13!==g){if(i.end-i.begin!==0&&(y(i.begin,i.end),s(i.begin,i.end-1)),c=q(i.begin-1),n>c&&(d=String.fromCharCode(g),j[c].test(d))){if(t(c),C[c]=d,z(),e=q(c),f){var k=function(){a.proxy(a.fn.caret,B,e)()};setTimeout(k,0)}else B.caret(e);i.begin<=m&&h()}b.preventDefault()}}}function y(a,b){var c;for(c=a;b>c&&n>c;c++)j[c]&&(C[c]=p(c))}function z(){B.val(C.join(""))}function A(a){var b,c,d,e=B.val(),f=-1;for(b=0,d=0;n>b;b++)if(j[b]){for(C[b]=p(b);d++<e.length;)if(c=e.charAt(d-1),j[b].test(c)){C[b]=c,f=b;break}if(d>e.length){y(b+1,n);break}}else C[b]===e.charAt(d)&&d++,k>b&&(f=b);return a?z():k>f+1?g.autoclear||C.join("")===D?(B.val()&&B.val(""),y(0,n)):z():(z(),B.val(B.val().substring(0,f+1))),k?b:l}var B=a(this),C=a.map(c.split(""),function(a,b){return"?"!=a?i[a]?p(b):a:void 0}),D=C.join(""),E=B.val();B.data(a.mask.dataName,function(){return a.map(C,function(a,b){return j[b]&&a!=p(b)?a:null}).join("")}),B.one("unmask",function(){B.off(".mask").removeData(a.mask.dataName)}).on("focus.mask",function(){if(!B.prop("readonly")){clearTimeout(b);var a;E=B.val(),a=A(),b=setTimeout(function(){B.get(0)===document.activeElement&&(z(),a==c.replace("?","").length?B.caret(0,a):B.caret(a))},10)}}).on("blur.mask",v).on("keydown.mask",w).on("keypress.mask",x).on("input.mask paste.mask",function(){B.prop("readonly")||setTimeout(function(){var a=A(!0);B.caret(a),h()},0)}),e&&f&&B.off("input.mask").on("input.mask",u),A()})}})}); | |
function showAjaxError() | |
{ | |
var ajaxErrorMessage="При загрузке данных произошла ошибка! Возможно, отсутствует соединение с Internet, попробуйте, пожалуйста, позже"; | |
alert(ajaxErrorMessage); | |
} | |
$(window).load(function() { | |
//Вешаем на контейнер инициализацию формы | |
$('.customFormContainer').each(function(){ | |
customFormInit($(this), $(this)); | |
}); | |
//Вешаем на ссылку инициализацию формы | |
$(document).on('click','.customFormLink',function(){ | |
customFormInit('body', $(this)); | |
return false; | |
}); | |
//Очищаем числовые поля от лишних символов | |
$(document).on('keyup blur','.customFormDigitalField',function(){ | |
this.value = this.value.replace (/[\D]+/, ''); | |
}); | |
$(document).on('focus','.customFormFieldInputText',function(){ | |
$(this).removeClass('customErrorField'); | |
$('.customFormErrors').fadeOut(300); | |
}); | |
//Вешаемся на отправку формы | |
$(document).on('submit','.customForm form',function(){ | |
var curForm=$(this); | |
var curSubmitBTN=curForm.find('input[type="submit"]'); | |
var btnText=curSubmitBTN.val(); | |
var curFormErrorContainer=curForm.find('.customFormErrors'); | |
if (curForm.parents('.customFormContainer').length>0) | |
{ | |
var needRefreshForm=true; | |
} else | |
{ | |
var needRefreshForm=false; | |
} | |
curFormErrorContainer.hide(); | |
/*Данные счётчика метрики*/ | |
var metrikaCounter=curForm.find('input.metrikaCounter').val(); | |
var metrikaTargetTry=curForm.find('input.metrikaTargetTry').val(); | |
var metrikaTargetSuccess=curForm.find('input.metrikaTargetSuccess').val(); | |
if (metrikaCounter && metrikaTargetTry && metrikaTargetSuccess) | |
{ | |
window['yaCounter'+metrikaCounter].reachGoal(metrikaTargetTry); | |
} | |
/*Данные счётчика метрики --- конец*/ | |
/*Данные счётчика GA*/ | |
var gaTargetTry=curForm.find('input.gaTargetTry').val(); | |
var gaTargetSuccess=curForm.find('input.gaTargetSuccess').val(); | |
if (gaTargetTry && gaTargetSuccess) | |
{ | |
ga('send', 'event', 'button', 'click', gaTargetTry); | |
} | |
/*Данные счётчика GA --- конец*/ | |
var redirectURL=curForm.find('input.redirectURL').val(); | |
var curName=curForm.find('input[name="name"]').first(); | |
var curEmail=curForm.find('input[name="email"]').first(); | |
var curPhone=curForm.find('input[name="phone"]').first(); | |
var curTextarea=curForm.find('textarea[name="textarea"]').first(); | |
var curFormCode=curForm.find('input[name="form_code"]').first().val(); | |
var formIsEmpty=false; | |
var curNameVal=$.trim(curName.val()); | |
var curEmailVal=$.trim(curEmail.val()); | |
var curPhoneVal=$.trim(curPhone.val()); | |
var curTextareaVal=$.trim(curTextarea.val()); | |
//var curFormName=curForm.find('.customFormName').html(); | |
//var curFormText=curForm.find('.customFormText').html(); | |
var initParams=curForm.data('init-params'); | |
//var curFormTitle=curForm.find('input[name="form_title"]').val(curFormName); | |
//проверяем имя | |
if (curName.length!=0) | |
{ | |
if (curName.hasClass('customFormFieldRequired')) | |
{ | |
if (curNameVal.length<3) | |
{ | |
curName.addClass('customErrorField'); | |
curForm.find('.customFormErrorsNameEmpty').show(); | |
} else | |
{ | |
curName.removeClass('customErrorField'); | |
curForm.find('.customFormErrorsNameEmpty').hide(); | |
} | |
} | |
} | |
//проверяем e-mail | |
if (curEmail.length!=0) | |
{ | |
if (curEmail.hasClass('customFormFieldRequired')) | |
{ | |
curForm.find('.customFormErrorsMailError').hide(); | |
curForm.find('.customFormErrorsMailEmpty').hide(); | |
curForm.find('.customFormErrorsMailDomainError').hide(); | |
if (curEmailVal.length>0) | |
{ | |
var email_pattern=/^([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,14}$/i; | |
if (email_pattern.test(curEmailVal)) | |
{ | |
curForm.find('.customFormErrorsMailError').hide(); | |
$.ajax | |
({ | |
url: "/ajax/checkDomain.php", | |
data: {mail:curEmailVal}, | |
type: "POST", | |
dataType: 'json', | |
async: false, | |
cache: false, | |
success: function(result) | |
{ | |
if (result.success=="1") | |
{ | |
curEmail.removeClass('customErrorField'); | |
curForm.find('.customFormErrorsMailDomainError').hide(); | |
} else | |
{ | |
curEmail.addClass('customErrorField'); | |
curForm.find('.customFormErrorsMailDomainError').show(); | |
} | |
}, | |
error: function(xhr, ajaxOptions, thrownError){ | |
var ajaxStatus="Status: "+xhr.status+" Error: "+thrownError+"\n"+ajaxOptions; | |
} | |
}); | |
} else | |
{ | |
curEmail.addClass('customErrorField'); | |
curForm.find('.customFormErrorsMailError').show(); | |
} | |
} else | |
{ | |
curEmail.addClass('customErrorField'); | |
curForm.find('.customFormErrorsMailEmpty').show(); | |
} | |
} | |
} | |
//проверяем телефон | |
if (curPhone.hasClass('customFormFieldRequired')) | |
{ | |
curForm.find('.customFormErrorsPhoneEmpty').hide(); | |
if (curPhoneVal.length!=17) | |
{ | |
curPhone.addClass('customErrorField'); | |
curForm.find('.customFormErrorsPhoneEmpty').show(); | |
} else | |
{ | |
curPhone.removeClass('customErrorField'); | |
curForm.find('.customFormErrorsPhoneEmpty').hide(); | |
} | |
} | |
//проверяем текстовое поле | |
if (curTextarea.hasClass('customFormFieldRequired')) | |
{ | |
if (curTextareaVal.length>0) | |
{ | |
curTextarea.removeClass('customErrorField'); | |
curForm.find('.customFormErrorsTextareaError').hide(); | |
} else | |
{ | |
curTextarea.addClass('customErrorField'); | |
curForm.find('.customFormErrorsTextareaError').show(); | |
} | |
} | |
//проверяем оценку | |
if (curForm.find('input[name="grade"]').length>0) | |
{ | |
var curGrade=curForm.find('input[name="grade"]'); | |
var curGradeVal=parseInt(curGrade.val()); | |
if (curGrade.hasClass('customFormFieldRequired')) | |
{ | |
if (curGradeVal>0 && curGradeVal<6) | |
{ | |
curGrade.removeClass('customErrorField'); | |
curForm.find('.customFormErrorsGradeError').hide(); | |
} else | |
{ | |
curGrade.addClass('customErrorField'); | |
curForm.find('.customFormErrorsGradeError').show(); | |
} | |
} | |
} | |
//проверяем chekbox | |
if (curForm.find('input[name="cheker"]').length>0) | |
{ | |
var curChekbox=curForm.find('input[name="cheker"]'); | |
var chekIn = $("input:checkbox:checked").length; | |
if (curChekbox.hasClass('customFormFieldRequired')) | |
{ | |
if (chekIn>0) | |
{ | |
curChekbox.removeClass('customErrorField'); | |
curForm.find('.customFormErrorsChekbox').hide(); | |
} else | |
{ | |
curChekbox.addClass('customErrorField'); | |
curForm.find('.customFormErrorsChekbox').show(); | |
} | |
} | |
} | |
var check = curForm.Chilren('') ; | |
//Если ошибок заполнения полей нет, пытаемся отправить форму | |
if (curForm.find('.customErrorField').length==0) | |
{ | |
startWaitForm(curSubmitBTN); | |
var form = curForm[0]; // You need to use standart javascript object here | |
var formData = new FormData(form); | |
if (curForm.find('.file').length>0 && curForm.find('.file')[0].files.length>0) | |
{ | |
formData.append('file', curForm.find('.file')[0].files[0]); | |
} | |
$.ajax | |
({ | |
url: "/ajax/sendForm.php", | |
data: formData, | |
contentType: false, | |
processData: false, | |
type: "POST", | |
dataType: 'json', | |
cache: false, | |
success: function(res) | |
{ | |
if (res.success=="1") | |
{ | |
if (curFormCode=='index_calc') | |
{ | |
$('.calc_tooths > div').removeClass('active'); | |
} | |
if (metrikaCounter && metrikaTargetSuccess) | |
{ | |
window['yaCounter'+metrikaCounter].reachGoal(metrikaTargetSuccess); | |
} | |
if (gaTargetTry && gaTargetSuccess) | |
{ | |
ga('send', 'event', 'button', 'click', gaTargetSuccess); | |
} | |
if (redirectURL) | |
{ | |
location.href=redirectURL; | |
} else | |
{ | |
if (curFormCode=='new_otzyv') | |
{ | |
var curSuccessRequestTitle=successRequestTitleOtzyv; | |
var curSuccessRequestBody=successRequestBodyOtzyv; | |
} else | |
{ | |
var curSuccessRequestTitle=successRequestTitle; | |
var curSuccessRequestBody=successRequestBody; | |
} | |
$.magnificPopup.open({ | |
items: { | |
src: $('<div class="white-popup white-popup-block zoom-anim-dialog"><div class="popup_header">'+curSuccessRequestTitle+'</div><div class="success_send">'+curSuccessRequestBody+'</div></div>'), | |
type: 'inline' | |
}, | |
preloader: false, | |
modal: false, | |
removalDelay: 300, | |
closeOnBgClick: false, | |
mainClass: 'my-mfp-slide-bottom', | |
callbacks: { | |
open: function() { | |
if (IS_GADGET) | |
{ | |
document.location.hash='popup'; | |
observerCloseMagnificPopup(); | |
$.magnificPopup.instance.close = function () { | |
removeHashForPopups(); | |
$.magnificPopup.proto.close.call(this); | |
}; | |
} | |
} | |
} | |
}); | |
if (needRefreshForm) | |
{ | |
customFormInit(curForm.parents('.customFormContainer'), curForm.parents('.customFormContainer')); | |
} | |
stopWaitForm(curSubmitBTN,btnText); | |
} | |
} else | |
{ | |
stopWaitForm(curSubmitBTN,btnText); | |
alert(res.error); | |
} | |
}, | |
error: function(xhr, ajaxOptions, thrownError){ | |
var ajaxStatus="Status: "+xhr.status+" Error: "+thrownError+"\n"+ajaxOptions; | |
stopWaitForm(curSubmitBTN,btnText); | |
showAjaxError(); | |
} | |
}); | |
} else | |
{ | |
stopWaitForm(curSubmitBTN,btnText,curFormErrorContainer,curForm,true); | |
} | |
return false; | |
}); | |
}); | |
//Функция, которая стартует перед отправкой формы и показывает процесс ожидания работы формы | |
function startWaitForm(formSubmitBtnObj) | |
{ | |
formSubmitBtnObj.val('Подождите...'); | |
formSubmitBtnObj.attr('disabled','disabled'); | |
} | |
//Функция, которая стартует после отправки формы, завершает ожидание | |
function stopWaitForm(formSubmitBtnObj,btnText,curFormErrorContainer,curForm,needShowErrors) | |
{ | |
window.setTimeout(function () { | |
formSubmitBtnObj.removeAttr('disabled'); | |
formSubmitBtnObj.val(btnText); | |
if (needShowErrors) | |
{ | |
curFormErrorContainer.fadeIn(300); | |
var curFormErrorContainerHeight=curFormErrorContainer.outerHeight(); | |
var curFormErrorContainerBottom=curFormErrorContainerHeight-curForm.find('.customFormFields').position().top; | |
if (curFormErrorContainerBottom>0) | |
{ | |
curFormErrorContainer.css('top','-'+curFormErrorContainerBottom+'px'); | |
} else | |
{ | |
curFormErrorContainer.css('top',Math.abs(curFormErrorContainerBottom)+'px'); | |
} | |
} | |
}, 10); | |
} | |
/*Инициализация формы*/ | |
function customFormInit(parentContainer, objInitiator) | |
{ | |
var title=objInitiator.data('title'); | |
var text=objInitiator.data('text'); | |
var initParams=objInitiator.data('params'); | |
var successText=objInitiator.data('success-text'); | |
var metrikaCounter=objInitiator.data('metrika-counter'); | |
var metrikaTargetTry=objInitiator.data('metrika-target-try'); | |
var metrikaTargetSuccess=objInitiator.data('metrika-target-success'); | |
var gaTargetTry=objInitiator.data('ga-target-try'); | |
var gaTargetSuccess=objInitiator.data('ga-target-success'); | |
var redirectURL=objInitiator.data('redirect-url'); | |
var bntText=objInitiator.data('btn-text'); | |
var formCode=objInitiator.data('form-code'); | |
var serviceFormName=objInitiator.data('service-form-name'); | |
var notPostToFO=objInitiator.data('not-post-to-fo'); | |
var fieldTitleName=objInitiator.data('field-title-name'); | |
var fieldTitleEmail=objInitiator.data('field-title-email'); | |
var fieldTitlePhone=objInitiator.data('field-title-phone'); | |
var customTextareaTitle=objInitiator.data('custom-textarea-title'); | |
var fieldPlaceholderName=objInitiator.data('field-placeholder-name'); | |
var fieldPlaceholderEmail=objInitiator.data('field-placeholder-email'); | |
var fieldPlaceholderPhone=objInitiator.data('field-placeholder-phone'); | |
var customTextareaPlaceholder=objInitiator.data('custom-textarea-placeholder'); | |
var showName=initParams[0]; | |
var showMail=initParams[1]; | |
var showPhone=initParams[2]; | |
var showTextarea=initParams[3]; | |
var needName=initParams[5]; | |
var needMail=initParams[6]; | |
var needPhone=initParams[7]; | |
var needTextarea=initParams[8]; | |
var classRequired=""; | |
var star=""; | |
var formHTML=""; | |
if (customTextareaPlaceholder==undefined) | |
{ | |
customTextareaPlaceholder=""; | |
} | |
if (parentContainer=="body") | |
{ | |
formHTML='<div id="customFormPopupContainer">'; | |
} | |
formHTML+='<div class="customForm"><div class="customFormContent">'; | |
if (parentContainer=="body") | |
{ | |
formHTML+='<div id="customFormCloseBtn"></div>'; | |
} | |
formHTML+='<div class="tester"></div><form method="post" data-init-params="'+initParams+'" class="form_'+formCode+'"><div class="successText"><span>'+successText+'</span></div>'; | |
if (title!=undefined) | |
{ | |
formHTML+='<div class="popup_header">'+title+'</div>'; | |
formHTML+='<input type="hidden" name="form_title" value="'+title+'" />'; | |
} | |
if (text!=undefined) | |
{ | |
formHTML+='<div class="customFormText">'+text+'</div>'; | |
formHTML+='<input type="hidden" name="form_text" value="'+text+'" />'; | |
} | |
formHTML+='<div class="customFormErrors"><div class="customFormErrorsNameEmpty">Введите ваше имя</div>'+ | |
'<div class="customFormErrorsMailEmpty">Введите E-mail</div><div class="customFormErrorsMailError">Неправильный формат e-mail</div>'+ | |
'<div class="customFormErrorsMailDomainError">Неправильно указан e-mail адрес</div>'+ | |
'<div class="customFormErrorsGradeError">Оцените работу клиники</div>'+ | |
'<div class="customFormErrorsPhoneEmpty">Введите номер телефона</div><div class="customFormErrorsPhoneError">Неправильный формат номера телефона</div>\ | |
<div class="customFormErrorsChekbox">Нужно согласие на обработку данных</div>'; | |
if (needTextarea=="Y") | |
{ | |
formHTML+='<div class="customFormErrorsTextareaError">Вы не заполнили поле "'+customTextareaPlaceholder+'"</div>'; | |
} | |
formHTML+='</div><div class="customFormFields">'; | |
if (showName=="Y") | |
{ | |
classRequired=""; | |
star=""; | |
if (needName=="Y") | |
{ | |
classRequired=" customFormFieldRequired"; | |
star=" *"; | |
} | |
//Если существует параметр кастомного тайтла поля "Имя" | |
if (fieldTitleName!=undefined) | |
{ | |
//Если параметр кастомного тайтла поля "Имя" НЕ пустой | |
if (fieldTitleName!="") | |
{ | |
formHTML+='<div class="customFormFieldTitle">'+fieldTitleName+star+'</div>'; | |
} else | |
{ | |
//проверяем, указан ли кастомный placeholder | |
//Если параметр кастомного тайтла поля "Имя" ПУСТОЙ и существует кастомный placeholder | |
if (fieldPlaceholderName!=undefined) | |
{ | |
//Если кастомный placeholder ПУСТОЙ | |
//то выводим стандартный тайтл! | |
if (fieldPlaceholderName=="") | |
{ | |
formHTML+='<div class="customFormFieldTitle">Имя'+star+'</div>'; | |
} | |
} | |
} | |
} else | |
{ | |
//Если НЕ существует параметр кастомного тайтла поля "Имя" | |
formHTML+='<div class="customFormFieldTitle">Имя'+star+'</div>'; | |
} | |
//Если существует кастомный placeholder поля "Имя" | |
if (fieldPlaceholderName!=undefined) | |
{ | |
//Если он НЕ пустой | |
if (fieldPlaceholderName!="") | |
{ | |
//проверяем, существует ли кастомный тайтл | |
if (fieldTitleName!=undefined) | |
{ | |
//если кастомный тайтл пустой, выводим кастомный placeholder с признаком обязательности заполнения | |
if (fieldTitleName=="") | |
{ | |
formHTML+='<div class="customFormFieldBody"><input type="text" name="name" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="'+fieldPlaceholderName+star+'" /></div>'; | |
} else | |
{ | |
//если кастомный тайтл НЕ пустой | |
//то просто подменяем placeholder | |
formHTML+='<div class="customFormFieldBody"><input type="text" name="name" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="'+fieldPlaceholderName+'" /></div>'; | |
} | |
} else | |
{ | |
//если кастомный тайтл НЕ существует | |
//то просто подменяем placeholder | |
formHTML+='<div class="customFormFieldBody"><input type="text" name="name" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="'+fieldPlaceholderName+'" /></div>'; | |
} | |
} else | |
{ | |
formHTML+='<div class="customFormFieldBody"><input type="text" name="name" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="" /></div>'; | |
} | |
} else | |
{ | |
if (fieldTitleName!=undefined) | |
{ | |
//если кастомный тайтл пустой, выводим стандартный placeholder с признаком обязательности заполнения | |
if (fieldTitleName=="") | |
{ | |
formHTML+='<div class="customFormFieldBody"><input type="text" name="name" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="Иван Иванович'+star+'" /></div>'; | |
} else | |
{ | |
//если кастомный тайтл НЕ пустой | |
//то просто выводим стандартный placeholder | |
formHTML+='<div class="customFormFieldBody"><input type="text" name="name" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="Иван Иванович" /></div>'; | |
} | |
} else | |
{ | |
formHTML+='<div class="customFormFieldBody"><input type="text" name="name" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="Иван Иванович" /></div>'; | |
} | |
} | |
} | |
if (showPhone=="Y") | |
{ | |
classRequired=""; | |
star=""; | |
if (needPhone=="Y") | |
{ | |
classRequired=" customFormFieldRequired"; | |
star=" *"; | |
} | |
//Если существует параметр кастомного тайтла поля "Телефон" | |
if (fieldTitlePhone!=undefined) | |
{ | |
//Если параметр кастомного тайтла поля "Телефон" НЕ пустой | |
if (fieldTitlePhone!="") | |
{ | |
formHTML+='<div class="customFormFieldTitle">'+fieldTitlePhone+star+'</div>'; | |
} else | |
{ | |
//проверяем, указан ли кастомный placeholder | |
//Если параметр кастомного тайтла поля "Телефон" ПУСТОЙ и существует кастомный placeholder | |
if (fieldPlaceholderPhone!=undefined) | |
{ | |
//Если кастомный placeholder ПУСТОЙ | |
//то выводим стандартный тайтл! | |
if (fieldPlaceholderPhone=="") | |
{ | |
formHTML+='<div class="customFormFieldTitle">Ваш номер телефона'+star+'</div>'; | |
} | |
} | |
} | |
} else | |
{ | |
//Если НЕ существует параметр кастомного тайтла поля "Телефон" | |
formHTML+='<div class="customFormFieldTitle">Ваш номер телефона'+star+'</div>'; | |
} | |
//Если существует кастомный placeholder поля "Телефон" | |
if (fieldPlaceholderPhone!=undefined) | |
{ | |
//Если он НЕ пустой | |
if (fieldPlaceholderPhone!="") | |
{ | |
//проверяем, существует ли кастомный тайтл | |
if (fieldTitlePhone!=undefined) | |
{ | |
//если кастомный тайтл пустой, выводим кастомный placeholder с признаком обязательности заполнения | |
if (fieldTitlePhone=="") | |
{ | |
formHTML+='<div class="customFormFieldBody"><input type="tel" name="phone" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="'+fieldPlaceholderPhone+star+'" /></div>'; | |
} else | |
{ | |
//если кастомный тайтл НЕ пустой | |
//то просто подменяем placeholder | |
formHTML+='<div class="customFormFieldBody"><input type="tel" name="phone" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="'+fieldPlaceholderPhone+'" /></div>'; | |
} | |
} else | |
{ | |
//если кастомный тайтл НЕ существует | |
//то просто подменяем placeholder | |
formHTML+='<div class="customFormFieldBody"><input type="tel" name="phone" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="'+fieldPlaceholderPhone+'" /></div>'; | |
} | |
} else | |
{ | |
formHTML+='<div class="customFormFieldBody"><input type="tel" name="phone" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="" /></div>'; | |
} | |
} else | |
{ | |
if (fieldTitlePhone!=undefined) | |
{ | |
//если кастомный тайтл пустой, выводим стандартный placeholder с признаком обязательности заполнения | |
if (fieldTitlePhone=="") | |
{ | |
formHTML+='<div class="customFormFieldBody"><input type="tel" name="phone" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="Ваш номер телефона'+star+'" /></div>'; | |
} else | |
{ | |
//если кастомный тайтл НЕ пустой | |
//то просто выводим стандартный placeholder | |
formHTML+='<div class="customFormFieldBody"><input type="tel" name="phone" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="Ваш номер телефона" /></div>'; | |
} | |
} else | |
{ | |
formHTML+='<div class="customFormFieldBody"><input type="tel" name="phone" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="Ваш номер телефона" /></div>'; | |
} | |
} | |
} | |
if (showMail=="Y") | |
{ | |
classRequired=""; | |
star=""; | |
if (needMail=="Y") | |
{ | |
classRequired=" customFormFieldRequired"; | |
star=" *"; | |
} | |
//Если существует параметр кастомного тайтла поля "E-mail" | |
if (fieldTitleEmail!=undefined) | |
{ | |
//Если параметр кастомного тайтла поля "E-mail" НЕ пустой | |
if (fieldTitleEmail!="") | |
{ | |
formHTML+='<div class="customFormFieldTitle">'+fieldTitleEmail+star+'</div>'; | |
} else | |
{ | |
//проверяем, указан ли кастомный placeholder | |
//Если параметр кастомного тайтла поля "E-mail" ПУСТОЙ и существует кастомный placeholder | |
if (fieldPlaceholderEmail!=undefined) | |
{ | |
//Если кастомный placeholder ПУСТОЙ | |
//то выводим стандартный тайтл! | |
if (fieldPlaceholderEmail=="") | |
{ | |
formHTML+='<div class="customFormFieldTitle">Введите Ваш E-MAIL'+star+'</div>'; | |
} | |
} | |
} | |
} else | |
{ | |
//Если НЕ существует параметр кастомного тайтла поля "E-mail" | |
formHTML+='<div class="customFormFieldTitle">Введите Ваш E-MAIL'+star+'</div>'; | |
} | |
//Если существует кастомный placeholder поля "E-mail" | |
if (fieldPlaceholderEmail!=undefined) | |
{ | |
//Если он НЕ пустой | |
if (fieldPlaceholderEmail!="") | |
{ | |
//проверяем, существует ли кастомный тайтл | |
if (fieldTitleEmail!=undefined) | |
{ | |
//если кастомный тайтл пустой, выводим кастомный placeholder с признаком обязательности заполнения | |
if (fieldTitleEmail=="") | |
{ | |
formHTML+='<div class="customFormFieldBody"><input type="email" name="email" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="'+fieldPlaceholderEmail+star+'" /></div>'; | |
} else | |
{ | |
//если кастомный тайтл НЕ пустой | |
//то просто подменяем placeholder | |
formHTML+='<div class="customFormFieldBody"><input type="email" name="email" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="'+fieldPlaceholderEmail+'" /></div>'; | |
} | |
} else | |
{ | |
//если кастомный тайтл НЕ существует | |
//то просто подменяем placeholder | |
formHTML+='<div class="customFormFieldBody"><input type="email" name="email" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="'+fieldPlaceholderEmail+'" /></div>'; | |
} | |
} else | |
{ | |
formHTML+='<div class="customFormFieldBody"><input type="email" name="email" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="" /></div>'; | |
} | |
} else | |
{ | |
if (fieldTitleEmail!=undefined) | |
{ | |
//если кастомный тайтл пустой, выводим стандартный placeholder с признаком обязательности заполнения | |
if (fieldTitleEmail=="") | |
{ | |
formHTML+='<div class="customFormFieldBody"><input type="email" name="email" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="ivan.ivanovich@mail.ru'+star+'" /></div>'; | |
} else | |
{ | |
//если кастомный тайтл НЕ пустой | |
//то просто выводим стандартный placeholder | |
formHTML+='<div class="customFormFieldBody"><input type="email" name="email" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="ivan.ivanovich@mail.ru" /></div>'; | |
} | |
} else | |
{ | |
formHTML+='<div class="customFormFieldBody"><input type="email" name="email" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="ivan.ivanovich@mail.ru" /></div>'; | |
} | |
} | |
} | |
if (showTextarea=="Y") | |
{ | |
classRequired=""; | |
star=""; | |
if (needTextarea=="Y") | |
{ | |
classRequired=" customFormFieldRequired"; | |
star=" *"; | |
} | |
if (customTextareaTitle!="") | |
{ | |
formHTML+='<div class="customFormFieldTitle">'+customTextareaTitle+star+'</div>'; | |
} | |
if (customTextareaPlaceholder!="") | |
{ | |
customTextareaTitle=customTextareaPlaceholder; | |
} | |
formHTML+='<div class="customFormFieldBody"><textarea name="textarea" class="form-control textareaField customFormFieldInputText'+classRequired+'" maxlength="1000" placeholder="'+customTextareaPlaceholder+star+'"></textarea><input type="hidden" name="textarea_title" value="'+customTextareaTitle+'" /></div>'; | |
} | |
formHTML+='</div><input type="hidden" name="site" value="'+location.href+'" /><input type="hidden" name="referrer" value="'+document.referrer+'" /><input type="hidden" name="form_code" value="'+formCode+'" />'; | |
if (metrikaCounter && metrikaTargetTry && metrikaTargetSuccess) | |
{ | |
formHTML+='<input type="hidden" class="metrikaCounter" value="'+metrikaCounter+'" /><input type="hidden" class="metrikaTargetTry" value="'+metrikaTargetTry+'" /><input type="hidden" class="metrikaTargetSuccess" value="'+metrikaTargetSuccess+'" />'; | |
} | |
if (gaTargetTry && gaTargetSuccess) | |
{ | |
formHTML+='<input type="hidden" class="gaTargetTry" value="'+gaTargetTry+'" /><input type="hidden" class="gaTargetSuccess" value="'+gaTargetSuccess+'" />'; | |
} | |
if (notPostToFO!=undefined) | |
{ | |
formHTML+='<input type="hidden" name="notPostToFO" value="'+notPostToFO+'" />'; | |
} | |
if (redirectURL) | |
{ | |
formHTML+='<input type="hidden" class="redirectURL" value="'+redirectURL+'" />'; | |
} | |
if (serviceFormName) | |
{ | |
formHTML+='<input type="hidden" name="serviceFormName" value="'+serviceFormName+'" />'; | |
} | |
formHTML+='<textarea name="hiddenAnyText" class="hiddenAnyText"></textarea>'; | |
if (parentContainer=="body" && formCode!="new_otzyv") | |
{ | |
formHTML+='\ | |
<div class="cheker">\ | |
<input type="checkbox" name="cheker" /><span> Я согласен на обработку моих персональных данных </span>\ | |
</div>'; | |
formHTML+='<div class="third_faces">Ваши персональные данные не будут переданы третьим лицам. Мы заботимся о Вас и Ваших данных!</div>'; | |
} | |
if (bntText) | |
{ | |
formHTML+='<div class="form-btn-block"><input class="customFormSubmitBtn btn" type="submit" value="'+bntText+'" /></form></div></div></div>'; | |
} else | |
{ | |
formHTML+='<div class="form-btn-block"><input class="customFormSubmitBtn btn" type="submit" value=" Отправить " /></form></div></div></div>'; | |
} | |
if (parentContainer=="body") | |
{ | |
formHTML+='</div>'; | |
$.magnificPopup.open({ | |
tClose: 'Закрыть (Esc)', | |
tLoading: 'Загрузка...', | |
items: { | |
src: '<div class="white-popup white-popup-block zoom-anim-dialog">'+formHTML+'</div>', | |
}, | |
type: 'inline', | |
preloader: true, | |
modal: false, | |
removalDelay: 300, | |
closeOnBgClick:false, | |
mainClass: 'my-mfp-zoom-in', | |
midClick: true, | |
callbacks: { | |
open: function() { | |
$("#customFormPopupContainer input[name='phone']").mask("+9 (999) 999-9999"); | |
if (IS_GADGET) | |
{ | |
document.location.hash='popup'; | |
observerCloseMagnificPopup(); | |
$.magnificPopup.instance.close = function () { | |
removeHashForPopups(); | |
$.magnificPopup.proto.close.call(this); | |
}; | |
} | |
if (typeof customFormInitCallback == 'function') { customFormInitCallback($("#customFormPopupContainer"),formCode); } | |
} | |
} | |
}); | |
} else | |
{ | |
parentContainer.html(formHTML); | |
parentContainer.find("input[name='phone']").mask("+9 (999) 999-9999"); | |
if (typeof customFormInitCallback == 'function') { customFormInitCallback(parentContainer,formCode); } | |
} | |
} | |
/*Инициализация формы --- конец*/ | |
/* | |
Использовать данную функцию для дополнительных действий с формами после их инициализации, | |
code - это код формы (например, data-form-code="55") | |
function customFormInitCallback(obj,code) { | |
switch (code) { | |
case 55: | |
obj.find('.customFormFields').append('<div class="customFormFieldBody"><input type="text" id="form_mk_time" class="form-control customFormFieldInputText" placeholder="Удобное время звонка"></div>'); | |
break; | |
} | |
} | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment