-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodal.js
More file actions
166 lines (140 loc) · 4.95 KB
/
modal.js
File metadata and controls
166 lines (140 loc) · 4.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
function editNav() {
var x = document.getElementById("myTopnav");
if (x.className === "topnav") {
x.className += " responsive";
} else {
x.className = "topnav";
}
}
// DOM Elements
const modalbg = document.querySelector(".bground");
const modalBtn = document.querySelectorAll(".modal-btn");
const formData = document.querySelectorAll(".formData");
const modalClosingBtn = document.querySelectorAll(".close");
const modalSubmitBtn = document.getElementById("btn-submit");
const modalBody = document.querySelector(".modal-body");
// launch modal event
modalBtn.forEach((btn) => btn.addEventListener("click", launchModal));
// launch modal form
function launchModal() {
modalbg.style.display = "block";
modalBodyText.style.display = "block";
congratulationMessage.style.display = "none";
}
// close modal form
modalClosingBtn.forEach((btn) => btn.addEventListener("click", closeModal));
// exit modal form
function closeModal() {
modalbg.style.display = "none";
}
;
// const needed for the checkFormValidity function
const modalFirst = document.getElementById("first");
const modalLast = document.getElementById("last");
const modalEmail = document.getElementById("email");
const modalBirthdate = document.getElementById("birthdate");
const modalQuantity = document.getElementById("quantity");
const modalCheckbox1 = document.getElementById("checkbox1");
const modalLocation = document.getElementsByName("location");
//check form validity function
function checkFormValidity() {
if (
modalFirst.value.length >= 2
&& modalLast.value.length >= 2
&& (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/).test(modalEmail.value)
&& (/^\d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])$/).test(modalBirthdate.value)
&& dateValidity(modalBirthdate)
&& (/^\d+$/).test(modalQuantity.value)
&& checkOneRadioChecked(modalLocation)
&& modalCheckbox1.checked
){
return true;
}
}
//check if date is valid
function dateValidity() {
let date = new Date()
let fullDateNumber = date.getTime();
let dateBirthday = new Date(modalBirthdate.value);
let dateBirthdayNumber = dateBirthday.getTime();
if(dateBirthdayNumber < fullDateNumber){
return true;
}
else{
document.querySelector(".errorBirthdate").innerHTML = "Vous devez entrer une date de naissance valide.";
return false;
}
}
//display or hide error message
function checkFieldsValidity() {
if (modalFirst.value.length < 2){
document.querySelector(".errorFirst").innerHTML = "Veuillez entrer 2 caractères ou plus pour le champ du prénom.";
}
else {
document.querySelector(".errorFirst").innerHTML = "";
}
if(modalLast.value.length < 2){
document.querySelector(".errorLast").innerHTML = "Veuillez entrer 2 caractères ou plus pour le champ du nom.";
}
else {
document.querySelector(".errorLast").innerHTML = "";
}
if(!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/).test(modalEmail.value)){
document.querySelector(".errorEmail").innerHTML = "Veuillez entrer une adresse mail valide.";
}
else {
document.querySelector(".errorEmail").innerHTML = "";
}
if(!(/^\d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])$/).test(modalBirthdate.value)){
document.querySelector(".errorBirthdate").innerHTML = "Vous devez entrer votre date de naissance.";
}
else {
document.querySelector(".errorBirthdate").innerHTML = "";
}
if(!(/^\d+$/).test(modalQuantity.value)){
document.querySelector(".errorQuantity").innerHTML = "Vous devez choisir un nombre de tournoi auquel vous avez participé";
}
else {
document.querySelector(".errorQuantity").innerHTML = "";
}
if(!checkOneRadioChecked(modalLocation)){
document.querySelector(".errorLocation").innerHTML = "Vous devez choisir une option.";
}
else {
document.querySelector(".errorLocation").innerHTML = "";
}
if(!modalCheckbox1.checked){
document.querySelector(".errorCheckbox").innerHTML = "Vous devez vérifier que vous acceptez les termes et conditions.";
}
else {
document.querySelector(".errorCheckbox").innerHTML = "";
}
}
//function checking if radio button has been checked
function checkOneRadioChecked(modalLocation) {
let isSomeOneChecked = false;
document.querySelectorAll('input[name="location"]').forEach(input => {
if (input.checked) {
isSomeOneChecked = true;
}
})
return isSomeOneChecked;
}
const modalBodyText = document.getElementById("modalBodyText");
const congratulationMessage = document.getElementById("congratulationMessage");
//function displaying a congratulation message
function congratulation () {
modalBodyText.style.display = "none";
congratulationMessage.style.display = "block";
}
document.getElementById("btn-submit").addEventListener("click", function(submit){
//prevent default behaviour on submit button
submit.preventDefault();
//checkFields function on each field and display/hide error message
checkFieldsValidity();
//chekc the overall form validy and launch if true
if (checkFormValidity()){
congratulation();
document.getElementById("reserve").reset();
}
});