PageSourceSearch

https://www.daniel-moquet.fr/funnel-rdv/public/js/documentation/documentation.js?v=20260413

js daniel-moquet.fr collected 2026-10-09 22:40:16 UTC 4,751 bytes, 122 lines download raw bytes

1window.gtag = function () {
2    dataLayer.push(arguments);
3}
4const freePhoneNumEl = document.getElementById('num-vert');
5freePhoneNumEl.addEventListener('click', () => {
6    window.gtag(
7        'event',
8        'clic_numero_vert',
9        {
10            'event_category': 'telephone',
11            'event_label': 'numero_vert',
12            'value': 1
13        }
14    );
15});
16const submitBtn = document.getElementById('submitButton');
17const messagesArea = document.querySelector('[data-interact="funnel-messages"]');
18
19const titleField = document.getElementById('title');
20const firstnameField = document.getElementById('firstName');
21const lastnameField = document.getElementById('lastName');
22const postalCodeField = document.getElementById('cp');
23const addressField = document.getElementById('address');
24const cityField = document.getElementById('ville');
25const phoneField = document.getElementById('phone');
26const prefixPhoneField = document.getElementById('country-prefix-phone');
27const emailField = document.getElementById("mail");
28const emailMsgArea = document.getElementById('email-msg-area');
29const phoneMsgArea = document.getElementById('phone-msg-area');
30const postalCodeMsgArea = document.getElementById('zipCode-msg-area');
31
32const formEl = document.getElementById('documentation');
33// Validation front : tous les champs required doivent être renseigné
34submitBtn.addEventListener('click', (e) => {
35    e.preventDefault();
36    if(!formIsValid()) {
37        return;
38    }
39    grecaptcha.execute().then((token) => {
40        document.getElementById('g-recaptcha-response').value = token;
41        const url= window.url_site.value + "api/documentation.php";
42        let formData = new FormData(formEl);
43        fetch(url, {
44            method: 'POST',
45            body: formData
46        })
47            .then((response) => response.json())
48            .then(async (data) => {
49                if(data.status !== 200) {
50                    messagesArea.innerHTML = layout_message(data.message, 'error');
51                    return;
52                }
53                const hashedEmail = await window.sha256(formData.get('email'));
54                const hashedPhoneNumber = await window.sha256(formData.get('email'));
55
56                window.gtag(
57                    'event',
58                    'formulaire_documentation',
59                    {
60                        'user_email': hashedEmail,
61                        'user_phone': hashedPhoneNumber,
62                        'event_category': 'formulaire',
63                        'event_label': 'documentation',
64                        'value': 1
65                    }
66                );
67                formEl.submit()
68            })
69            .catch((err) => {
70                console.error(err);
71            })
72    });
73})
74
75const formIsValid = function() {
76    phoneMsgArea.innerHTML      = "";
77    emailMsgArea.innerHTML      = "";
78    messagesArea.innerHTML      = "";
79    postalCodeMsgArea.innerHTML = "";
80
81    let isValid = true;
82
83    const areInputFilled= titleField.value !== "" && firstnameField.value !== "" && lastnameField.value !== "" &&
84        postalCodeField.value !== "" && cityField.value !== "" &&
85        phoneField.value !== "" && emailField.value !== "" && addressField.value !== ""
86    ;
87
88    // On vérifie que le champs téléphone a le bon nombre de chiffres : 10 pour les numéros français et 9 pour les numéros belges
89    const phoneRegex = prefixPhoneField.value === 'be' ? /^\d{9}$/ : /^\d{10}$/;
90
91    const isPhoneValid = phoneRegex.test(phoneField.value.replace(/\s+/g, '')); // On enlève les espaces avant de tester
92
93    // On vérifie que le champs code postal contient au minimum 4 chiffres
94    const postalCodeRegex = /^\d{4,}$/;
95    const isPostalCodeValid = postalCodeRegex.test(postalCodeField.value);
96
97    // On vérifie également le format de l'email
98    const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
99    const isEmailValid = emailRegex.test(emailField.value);
100
101    if(!isPostalCodeValid) {
102        postalCodeMsgArea.innerHTML = layout_message("Le code postal doit contenir 5 chiffres (France métropolitaine) ou 4 chiffres (DOM, Belgique).", 'error');
103        isValid = false;
104    }
105
106    if (!isPhoneValid) {
107        phoneMsgArea.innerHTML = layout_message("Le numéro de téléphone renseigné n'est pas valide.", 'error');
108        isValid = false;
109    }
110
111    if (!isEmailValid) {
112        emailMsgArea.innerHTML = layout_message("L'adresse email renseignée n'est pas valide.", 'error');
113        isValid = false;
114    }
115
116    if(!areInputFilled) {
117        messagesArea.innerHTML = layout_message("Merci de renseigner tous les champs marqué d'une étoile pour passer à l'étape suivante", 'error');
118        isValid = false;
119    }
120
121    return isValid;
122}

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.