PageSourceSearch

https://knwu.nl/build/scripts/custom.js?v=1790771757

js knwu.nl collected 2026-10-01 11:42:11 UTC 3,574 bytes, 106 lines download raw bytes

1// jQuery(document).ready(function () {
2// 	$('a[href^="#"]').on("click", function (e) {
3// 		var target = this.hash,
4// 			$target = $(target);
5
6// 		$("html, body")
7// 			.stop()
8// 			.animate(
9// 				{
10// 					scrollTop: $target.offset().top - 110,
11// 				},
12// 				900,
13// 				"swing",
14// 				function () {
15// 					window.location.hash = target;
16// 				}
17// 			);
18// 	});
19// });
20
21(function () {
22    var newsletterForm = document.querySelector('.footer-newsletter[data-gravity-form-id="1"]');
23
24    if (!newsletterForm) {
25        return;
26    }
27
28    var emailInput = newsletterForm.querySelector('input[type="email"]');
29    var submitButton = newsletterForm.querySelector('button[type="submit"]');
30    var errorMessage = newsletterForm.querySelector('.footer-newsletter__error');
31    var statusMessage = newsletterForm.querySelector('.footer-newsletter__status');
32
33    function setError(message) {
34        errorMessage.textContent = message || '';
35        emailInput.setAttribute('aria-invalid', message ? 'true' : 'false');
36    }
37
38    newsletterForm.addEventListener('submit', function (event) {
39        event.preventDefault();
40
41        setError('');
42        statusMessage.textContent = '';
43
44        if (!emailInput.value.trim() || !emailInput.validity.valid) {
45            setError('Vul een geldig e-mailadres in.');
46            emailInput.focus();
47            return;
48        }
49
50        submitButton.disabled = true;
51
52        // Token van Guifi Forms Shield: laat zien dat een echt mens het formulier
53        // heeft geopend en hoe lang erover is gedaan. Lukt ophalen niet, dan gaat
54        // de aanmelding door; de module beoordeelt hem dan strenger.
55        function haalToken() {
56            return fetch('/newsletter-submit.php?token=1', { headers: { Accept: 'application/json' } })
57                .then(function (response) { return response.ok ? response.json() : {}; })
58                .catch(function () { return {}; });
59        }
60
61        haalToken()
62            .then(function (tokenData) {
63                return fetch('/newsletter-submit.php', {
64                    method: 'POST',
65                    headers: {
66                        'Content-Type': 'application/json',
67                        'Accept': 'application/json'
68                    },
69                    body: JSON.stringify({
70                        email: emailInput.value.trim(),
71                        guifi_fs_token: (tokenData && tokenData.token) || ''
72                    })
73                });
74            })
75            .then(function (response) {
76                return response.json().catch(function () {
77                    return {
78                        is_valid: false,
79                        message: 'Aanmelden is niet gelukt. Probeer het opnieuw.'
80                    };
81                });
82            })
83            .then(function (result) {
84                if (!result.is_valid) {
85                    setError(result.message || 'Aanmelden is niet gelukt. Probeer het opnieuw.');
86                    emailInput.focus();
87                    return;
88                }
89
90                statusMessage.textContent = 'Bedankt voor je aanmelding.';
91                emailInput.select();
92            })
93            .catch(function () {
94                setError('Aanmelden is niet gelukt. Probeer het opnieuw.');
95            })
96            .then(function () {
97                submitButton.disabled = false;
98            });
99    });
100
101    emailInput.addEventListener('input', function () {
102        if (errorMessage.textContent) {
103            setError('');
104        }
105    });
106}());

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.