Guest User

Untitled

a guest
Nov 20th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.86 KB | None | 0 0
  1. // FORMS
  2.  
  3. .form-wrap
  4. form.form-main.form
  5. .form-main__close
  6. h2.form-main__title <span>заказать</span> обратный звонок
  7. .form-main__fields
  8. input(type="text" name="name" placeholder="Введите ваше имя")
  9. input(type="text" name="phone" placeholder="Введите ваш телефон" required)
  10. input(type="text" name="contact" placeholder="Введите ваш телефон или email" required)
  11. button.btn-main записаться
  12.  
  13. // end forms
  14.  
  15.  
  16. .form-wrap
  17. display: none
  18. position: fixed
  19. top: 0
  20. bottom: 0
  21. right: 0
  22. left: 0
  23. z-index: 50
  24. background: rgba(0,0,0,.7)
  25.  
  26. .form-main
  27. position: relative
  28. z-index: 100
  29. top: 15%
  30. margin-left: auto
  31. margin-right: auto
  32. max-width: 420px
  33. background-color: #fff
  34. padding: 45px 30px
  35. text-align: center
  36.  
  37. .btn-main
  38. min-width: 260px
  39. padding-top: 12px
  40. padding-bottom: 12px
  41.  
  42. .form-main__title
  43. margin-bottom: 40px
  44. text-align: center
  45. font-size: rem(33)
  46. text-transform: uppercase
  47. font-weight: 700
  48. line-height: 1.2
  49.  
  50. span
  51. color: $c-accent
  52.  
  53. .form-main__fields
  54. margin-bottom: 25px
  55. input
  56. width: 100%
  57. border-radius: 10px
  58. margin-bottom: 20px
  59. padding: 10px 12px
  60. border: 1px solid #242d32
  61. background-color: #ffffff
  62. font-style: italic
  63. font-family: $f-main
  64. font-size: rem(18)
  65. transition: box-shadow .2s
  66.  
  67. &:focus
  68. box-shadow: inset 0 0 3px 1px rgba(#000, .5)
  69.  
  70. &.hidden
  71. display: none
  72.  
  73. .form-main__close
  74. width: 23px
  75. height: 23px
  76. position: absolute
  77. top: 20px
  78. right: 20px
  79. background: url(../img/decor/cross.png) no-repeat center
  80. cursor: pointer
  81.  
  82.  
  83. // ========>> FORMS <<========
  84.  
  85. const $form = $('.form');
  86. const $formMain = $('.form-main');
  87. const $formWrap = $('.form-wrap');
  88. const $formFields = $('.form-main__fields > *', $formMain);
  89. const $formTrigger = $('.form-trigger');
  90. const $formMainTitle = $('.form-main__title');
  91. const $formMainBtn = $('.btn-main', $formMain);
  92. // title for email
  93. let title = '';
  94.  
  95. function hideFields() {
  96. $formFields.each((i, field) => {
  97. field.setAttribute('disabled', '');
  98. field.classList.add('hidden');
  99. });
  100. }
  101. hideFields();
  102.  
  103. $formWrap.on('click', function (event) {
  104. if ($(event.target).hasClass('form-wrap') || $(event.target).hasClass('form-main__close')) {
  105. $(this).fadeOut(200);
  106. $(document.documentElement).removeClass('modal-open');
  107. }
  108. });
  109.  
  110. $formTrigger.on('click', (event) => {
  111. hideFields();
  112. title = '';
  113. $formMain.trigger('reset');
  114.  
  115. const target = event.target;
  116. const currFieldsName = target.getAttribute('data-fields').split(',');
  117. const currTitle = target.getAttribute('data-title');
  118. const currBtnText = target.getAttribute('data-btn-text');
  119. const currEmailTitle = target.getAttribute('data-email-title');
  120.  
  121. // Set current titles
  122. if (currTitle) $formMainTitle.html(currTitle);
  123. if (currBtnText) $formMainBtn.text(currBtnText);
  124. if (currEmailTitle) title = currEmailTitle;
  125.  
  126. // Enable current fields
  127. $formFields.each((i, field) => {
  128. if (currFieldsName.indexOf(field.getAttribute('name')) !== -1) {
  129. field.removeAttribute('disabled');
  130. field.classList.remove('hidden');
  131. }
  132. });
  133.  
  134. $formWrap.fadeIn(200);
  135. $(document.documentElement).addClass('modal-open');
  136. });
  137.  
  138. $form.submit((event) => {
  139. const $target = $(event.target);
  140. event.preventDefault();
  141.  
  142. if ($target.hasClass('feedback-form')) title = 'Вопрос';
  143.  
  144. $.ajax({
  145. url: './mail.php',
  146. type: 'POST',
  147. data: `${$target.serialize()}&title=${encodeURIComponent(title)}`
  148. }).done(() => {
  149. $form.trigger("reset");
  150.  
  151. const loc = window.location;
  152. window.location.href = `${loc.origin}/thank-you.html`;
  153. }).fail(() => {
  154. $formMain.trigger("reset");
  155. alert("Ошибка отправки формы");
  156. });
  157. });
  158.  
  159. // end forms
Add Comment
Please, Sign In to add comment