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" target="blank">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 = '¡Su correo ya forma parte de este viaje ✈️ ! Ya está registrado para recibir nuestras novedades, destinos y promociones exclusivas.';
  63.         messageElement.style.color = '#005CB9'; 
  64.         messageElement.style.fontFamily = 'Roboto, sans-serif';
  65.         messageElement.style.fontWeight = '500';
  66.         return;  
  67.     }
  68.     const formData = new FormData(this);
  69.     const url = window.location.origin + '/formularios/emblue/suscribe/form';
  70.     const messageElement = document.getElementById('formMessage');
  71.     
  72.     fetch(url, {
  73.         method: 'POST',
  74.         body: formData,
  75.         headers: {
  76.             'X-Requested-With': 'XMLHttpRequest'
  77.         }
  78.     })
  79.     .then(response => {
  80.         if (response.ok) {
  81.             return response.text();
  82.         } else {
  83.             throw new Error('Ya existe una suscripción con este correo electrónico.');
  84.         }
  85.     })
  86.     .then(data => {
  87.         messageElement.textContent = 'Suscripción exitosa';
  88.         messageElement.style.color = '#005CB9';  
  89.         submitCount++;  // Incrementa el contador después de un envío exitoso
  90.     })
  91.     .catch(error => {
  92.         messageElement.textContent = error.message;
  93.         messageElement.style.color = '#EB5757';  
  94.         submitCount++;  
  95.     });
  96. });
  97. // Restaura el contador cuando se modifica un campo
  98. document.querySelectorAll('#suscribeForm input').forEach(input => {
  99.     input.addEventListener('input', () => {
  100.         submitCount = 0;
  101.     });
  102. });
  103. </script>