src/Aviatur/TwigBundle/Resources/views/aviatur/Flux/Form/Default/emblue_suscribe_home.html.twig line 1

Open in your IDE?
  1. <div class="items-center justify-center" style="background: var(--background, #F5F7F9);">
  2.     <form id="suscribeForm" method="POST" class="max-w-screen-lg mx-auto pt-4 p-8 flex flex-col items-center bg-[#F5F7F9]">
  3.         <!-- Icono -->
  4.         <div class="pb-4 mb-0">
  5.             <img src="https://aviaturcdndev.z5.web.core.windows.net/assets/aviatur_assets/img/others/newsletter_mail.png" alt="Newsletter" class="w-[92px] h-[92px]">
  6.         </div>
  7.         <!-- Título -->
  8.         <h5 class="text-center text-xl font-bold" style="font-family: Roboto;">Suscríbase a nuestro Newsletter</h5>
  9.         <!-- Mensaje de éxito o error -->
  10.         <div id="formMessage" class="text-center text-red-600 pb-4 mb-0"></div>
  11.         <!-- Inputs de Nombre y Correo -->
  12.         <div class="flex flex-wrap justify-center gap-x-8 gap-y-6 pb-4 mb-0 w-full">
  13.             <div class="relative min-h-[56px] w-[400px] gap-y-6">
  14.                 <input type="text" id="name" name="form[name]" placeholder="" required class="absolute left-0 top-0 right-0 bottom-0 h-full w-full rounded-[0.375rem] border border-[#005CB9] hover:border-[#005CB9] focus:border-[#005CB9] appearance-none focus:outline-none bg-[#F5F7F9] pl-3.5 pr-3.5 text-base font-normal text-[#042A44] hover:text-[#005CB9] focus:text-[#005CB9] peer">
  15.                 <label for="name" class="absolute top-0 left-[2.5%] bg-[#F5F7F9] text-[#005CB9] text-base font-[Roboto] font-normal peer-hover:text-[#005CB9] peer-hover:font-medium peer-focus:text-[#005CB9] peer-focus:font-medium z-[10] pl-1 pr-1 translate-y-[-50%] transition-all">
  16.                     Nombre Completo
  17.                 </label>
  18.             </div>
  19.             <div class="relative min-h-[56px] w-[400px]">
  20.                 <input type="email" id="email" name="form[email]" placeholder="" required class="absolute left-0 top-0 right-0 bottom-0 h-full w-full rounded-[0.375rem] border border-[#005CB9] hover:border-[#005CB9] focus:border-[#005CB9] appearance-none focus:outline-none bg-[#F5F7F9] pl-3.5 pr-3.5 text-base font-normal text-[#042A44] hover:text-[#005CB9] focus:text-[#005CB9] peer">
  21.                 <label for="email" class="absolute top-0 left-[2.5%] bg-[#F5F7F9] text-[#005CB9] text-base font-[Roboto] font-normal peer-hover:text-[#005CB9] peer-hover:font-medium peer-focus:text-[#005CB9] peer-focus:font-medium z-[10] pl-1 pr-1 translate-y-[-50%] transition-all">
  22.                     Correo electrónico
  23.                 </label>
  24.             </div>
  25.         </div>
  26.         <!-- Checkbox de suscripción al newsletter -->
  27.         <div class="flex items-start pb-4 mb-0 w-full justify-center">
  28.                 <div class="flex xs:mt-3 s:mt-2 justify-start">
  29.             <input type="checkbox" id="subscribeToNewsletter" name="form[subscribeToNewsletter]" class="text-[#0AC6D1] bg-[#828282] border-gray-300 rounded focus:ring-blue-500 mr-2 mt-[4px] w-8 h-8">
  30. </div>
  31.     <label for="subscribeToNewsletter" class="text-[#2e2e2e] mb-0 text-base font-light font-['Ubuntu'] leading-3">
  32.         <span>Me gustaría recibir </span>
  33.         <span class="font-normal xs:leading-8 s:leading-8">boletines</span>
  34.         <span> y </span>
  35.         <span class="font-normal xs:leading-8 s:leading-8">ofertas especiales por correo electrónico.</span>
  36.     </label>
  37. </div>
  38.         <!-- Checkbox de aceptación de términos -->
  39.         <div class="flex items-start pb-4 mb-0 w-full justify-center">
  40.            <div class="flex xs:mt-3 s:mt-2 justify-start">
  41.     <input type="checkbox" id="acceptTerms" name="form[acceptTerms]" required class="text-[#0AC6D1] bg-[#828282] border-gray-300 rounded focus:ring-blue-500 mr-2 mt-[4px] w-8 h-8">
  42.     </div>
  43.     <label for="acceptTerms" class="text-[#2e2e2e] mb-0 text-base font-light font-['Ubuntu'] leading-3 xs:leading-8 s:leading-8">
  44.         <span>Autorizo el tratamiento de mis datos personales de conformidad con la</span>
  45.         <a href="https://www.aviatur.com/contenidos/politica-de-privacidad" class="font-normal underline">política de datos y privacidad.</a>
  46.     </label>
  47. </div>
  48.         <!-- Botón de suscripción -->
  49.         <button type="submit" class="w-[117px] h-[47px] px-5 py-3.5 bg-white rounded-full shadow flex justify-center items-center text-[#042a44] text-base font-medium font-['Roboto'] pb-4 mb-0">
  50.             Suscribirse
  51.         </button>
  52.     </form>
  53. </div>
  54. <script>
  55.  let submitCount = 0;
  56. document.getElementById('suscribeForm').addEventListener('submit', function(event) {
  57.     event.preventDefault();
  58.     
  59.     // Verifica si el formulario ya se ha enviado dos veces
  60.     if (submitCount >= 1) {
  61.         const messageElement = document.getElementById('formMessage');
  62.         messageElement.textContent = 'Por favor, intente de nuevo con un correo electrónico diferente.';
  63.         messageElement.style.color = '#EB5757';  
  64.         return;  // Detiene el envío del formulario
  65.     }
  66.     const formData = new FormData(this);
  67.     const url = window.location.origin + '/formularios/emblue/suscribe/form';
  68.     const messageElement = document.getElementById('formMessage');
  69.     
  70.     fetch(url, {
  71.         method: 'POST',
  72.         body: formData,
  73.         headers: {
  74.             'X-Requested-With': 'XMLHttpRequest'
  75.         }
  76.     })
  77.     .then(response => {
  78.         if (response.ok) {
  79.             return response.text();
  80.         } else {
  81.             throw new Error('Ya existe una suscripción con este correo electrónico.');
  82.         }
  83.     })
  84.     .then(data => {
  85.         messageElement.textContent = 'Suscripción exitosa';
  86.         messageElement.style.color = '#005CB9';  
  87.         submitCount++;  // Incrementa el contador después de un envío exitoso
  88.     })
  89.     .catch(error => {
  90.         messageElement.textContent = error.message;
  91.         messageElement.style.color = '#EB5757';  
  92.         submitCount++;  
  93.     });
  94. });
  95. // Restaura el contador cuando se modifica un campo
  96. document.querySelectorAll('#suscribeForm input').forEach(input => {
  97.     input.addEventListener('input', () => {
  98.         submitCount = 0;
  99.     });
  100. });
  101. </script>