modified the contact form
[theme-danix.xyz.git] / assets / js / contact.js
CommitLineData
a8d04f9e 1/**
2 * @file
3 * A JavaScript file for the contact form.
4 */
5
6(function () {
7
8 'use strict';
9
10 const form = document.querySelector('.contact-form');
3a494925 11 const submit_button = form.querySelector('.form-submit');
12 const reset_button = form.querySelector('.form-reset');
a8d04f9e 13 const action = form.getAttribute('data-protect');
14 const body = document.querySelector('body');
15
16 function activateForm() {
17 form.setAttribute('action', action);
3a494925 18 submit_button.removeAttribute('disabled');
19 reset_button.removeAttribute('disabled');
a8d04f9e 20 }
21
22 // Display the hidden form.
23 form.classList.remove('hidden');
24
25 // Wait for a mouse to move, indicating they are human.
26 body.addEventListener('mousemove', () => activateForm());
27 // Wait for a touch move event, indicating that they are human.
28 body.addEventListener('touchmove', () => activateForm());
29 // A tab or enter key pressed can also indicate they are human.
30 body.addEventListener('keydown', function (e) {
31 if ((e.key === 'Tab') || (e.key === 'Enter')) {
32 activateForm();
33 }
34 });
35
36 // Mark the form as submitted.
3a494925 37 submit_button.addEventListener('click', () => form.classList.add('js-submitted'));
38
39 // Reset the form with the clear button
40 reset_button.addEventListener('click', () => form.reset());
a8d04f9e 41
42 // Display messages.
43 if (location.search.substring(1) !== '') {
44 switch (location.search.substring(1)) {
45 case 'submitted':
46 document.querySelector('.contact-submitted').classList.remove('hidden');
47 break;
48
49 case 'error':
50 document.querySelector('.contact-error').classList.remove('hidden');
51 break;
52 }
53 }
54
55})();