1window.gtag = function () { 2 dataLayer.push(arguments); 3} 4 5const submitBtn = document.getElementById("submitButton"); 6const formEl = document.getElementById("reminderForm"); 7const inputBesoins = document.querySelectorAll('[data-watch="checkboxNeed"]'); 8const messagesArea = document.querySelector('[data-interact="funnel-messages"]'); 9const phoneField = document.getElementById('telephone'); 10 11phoneField.addEventListener(('input'), (event) => { 12 submitBtn.disabled = event.target.value === ""; 13}) 14 15submitBtn.addEventListener('click', (e) => { 16 e.preventDefault(); 17 if(!formIsValid()) { 18 return; 19 } 20 21 grecaptcha.execute().then((token) => { 22 document.getElementById('g-recaptcha-response').value = token; 23 const url= window.url_site.value + "api/reminder.php"; 24 let formData = new FormData(formEl); 25 fetch(url, { 26 method: 'POST', 27 body: formData 28 }) 29 .then((response) => response.json()) 30 .then((data) => { 31 if(data.status !== 200) { 32 messagesArea.innerHTML = layout_message(data.message, 'error'); 33 return; 34 } 35 36 window.gtag( 37 'event', 38 'formulaire_rappel', 39 { 40 'event_category': 'formulaire', 41 'event_label': 'rappel', 42 'value': 1 43 } 44 ); 45 formEl.submit() 46 }) 47 .catch((err) => { 48 console.error(err); 49 }) 50 }); 51 52 53}); 54 55function formIsValid() { 56 // On vérifie qu'au moins un projet est sélectionné et qu'un numéro de téléphone est renseigné 57 const phoneMessageArea = document.getElementById('phone-msg-area'); 58 const nbSelectedProjects = Array.from(inputBesoins).filter( _ => _.checked ).length; 59 const prefixPhoneField = document.getElementById('country-prefix-phone'); 60 const isAllBrandWebsite = window.location.href.startsWith('https://www.daniel-moquet.fr'); 61 62 phoneMessageArea.innerHTML = ""; 63 messagesArea.innerHTML = ""; 64 65 let formIsValid = true; 66 if(nbSelectedProjects === 0 && isAllBrandWebsite) { 67 messagesArea.innerHTML = layout_message('Merci de sélectionner au moins un projet', 'error'); 68 formIsValid = false; 69 } 70 const phoneRegex = prefixPhoneField.value === 'be' ? /^\d{9}$/ : /^\d{10}$/; 71 72 if(phoneField.value === "" || !phoneRegex.test(phoneField.value.replace(/\s+/g, ''))) { 73 phoneMessageArea.innerHTML = layout_message("Le numéro de téléphone renseigné n'est pas valide.", 'error'); 74 formIsValid = false; 75 } 76 77 return formIsValid; 78}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.