templates/block/modal_callback.html.twig line 1

Open in your IDE?
  1. <script src="https://www.google.com/recaptcha/api.js?render={{ recaptcha_key }}"></script>
  2. <script>
  3. document.addEventListener('DOMContentLoaded', function () {
  4.     const form = document.getElementById('order-callback');
  5.     const formResult = document.getElementById('form-result');
  6.     // Проверяем, существует ли форма на странице, чтобы избежать ошибок
  7.     if (form) {
  8.         form.addEventListener('submit', function (e) {
  9.             alert('submit');
  10.             e.preventDefault();
  11.             
  12.             // 2. Получаем токен reCAPTCHA
  13.             grecaptcha.ready(function () {
  14.                 alert('g cap')
  15.                 grecaptcha.execute('{{ recaptcha_key }}', { action: 'callback_form' }).then(function (token) {
  16.                     
  17.                     // Добавляем токен в скрытое поле формы
  18.                     const recaptchaInput = form.querySelector('input[name="g-recaptcha-response"]');
  19.                     recaptchaInput.value = token;
  20.                     // 3. Отправляем данные формы с помощью AJAX (Fetch API)
  21.                     
  22.                     // Собираем все данные из формы
  23.                     const formData = new FormData(form);
  24.                     fetch(form.action, {
  25.                         method: form.method,
  26.                         body: formData
  27.                     })
  28.                     .then(response => response.json()) // Ожидаем от сервера ответ в формате JSON
  29.                     .then(data => {
  30.                         
  31.                     })
  32.                     .catch(error => {
  33.                         // Обработка сетевых ошибок
  34.                         console.error('Ошибка при отправке AJAX:', error);
  35.                         formResult.innerHTML = '<p style="color: red;">Произошла сетевая ошибка. Попробуйте позже.</p>';
  36.                     });
  37.                 });
  38.             });
  39.         });
  40.     }
  41. });
  42. </script>
  43. <div class="modal" id="modal_callback" tabindex="-1" role="dialog">
  44.     <div class="modal-dialog">
  45.         <div class="modal-content">
  46.             <div class="modal-header">
  47.                 <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span
  48.                             class="sr-only">Close</span></button>
  49.                 <div class="h4"><i class=" icon-mail-2"></i> {{ labels.get('modal-callback-1')|raw }} </div>
  50.             </div>
  51.             <div class="modal-body">
  52.                 <form id="order-callback" method="post" action="{{ path('callback') }}">
  53.                     <input type="hidden" name="code" value="" class="g-code" id="g-code">
  54.                     <div class="form-group" id="callback-form-name">
  55.                         <label for="recipient-name2" class="control-label">{{ labels.get('modal-callback-2')|raw }}</label>
  56.                         <input class="form-control" id="recipient-name2" placeholder="{{ labels.get('modal-callback-6')|raw }}"
  57.                                data-placement="top" data-trigger="manual"
  58.                                data-content="Must be at least 3 characters long, and must only contain letters."
  59.                                type="text" name="name">
  60.                     </div>
  61.                     <div class="form-group" id="callback-form-phone">
  62.                         <label for="recipient-Phone-Number2" class="control-label">{{ labels.get('modal-callback-3')|raw }}</label>
  63.                         <input type="text" maxlength="60" class="form-control" id="recipient-Phone-Number2" placeholder="{{ labels.get('modal-callback-7')|raw }}" name="phone">
  64.                     </div>
  65.                     <div class="form-group">
  66.                         <p class="pull-left text-danger hide" id="callback-form-error">&nbsp; {{ labels.get('modal-callback-4')|raw }} </p>
  67.                     </div>
  68.                 </form>                
  69.             </div>
  70.             <div class="modal-footer">
  71.                 <input type="hidden" name="g-recaptcha-response" id="g-recaptcha-response">
  72.                 <button type="button" class="btn btn-default" data-dismiss="modal" id="sendclose2">{{ labels.get('modal-callback-5')|raw }}</button>
  73.                 <input type="submit" class="btn btn-callback pull-right" id="sendcallback" value="{{ labels.get('modal-callback-8')|raw }}">
  74.             </div>
  75.         </div>
  76.     </div>
  77. </div>