Skip to content

Commit 7ddaf28

Browse files
committed
a
1 parent bafc9ef commit 7ddaf28

1 file changed

Lines changed: 41 additions & 89 deletions

File tree

Validation/script.js

Lines changed: 41 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -6,156 +6,108 @@ const password = document.getElementById('password');
66
const erroriGlobali = document.getElementById('errori-globali');
77
const messaggio = document.getElementById('messaggio');
88

9-
function controllaNominativo(valore) {
10-
return /^[a-zA-Z\s]+$/.test(valore) && valore.trim() !== '';
11-
}
12-
13-
function controllaEta(valore) {
14-
const numero = parseInt(valore);
15-
return numero >= 18 && numero <= 100;
16-
}
17-
18-
function controllaPassword(valore) {
19-
if (valore.length < 8 || valore.length > 20) return false;
20-
if (!/[A-Z]/.test(valore)) return false;
21-
if (!/[a-z]/.test(valore)) return false;
22-
if (!/[0-9]/.test(valore)) return false;
23-
if (!/[!@#$%^&*]/.test(valore)) return false;
24-
return true;
25-
}
26-
27-
function mostraErrore(campo, testo) {
28-
const divErrore = document.getElementById('errore-' + campo);
29-
divErrore.textContent = testo;
30-
divErrore.classList.remove('hidden');
31-
document.getElementById(campo).classList.add('border-red-500');
32-
}
33-
34-
function nascondiErrore(campo) {
35-
const divErrore = document.getElementById('errore-' + campo);
36-
divErrore.classList.add('hidden');
37-
document.getElementById(campo).classList.remove('border-red-500');
38-
document.getElementById(campo).classList.add('border-green-500');
39-
}
40-
419
function validaCampo(campo) {
4210
let valido = false;
43-
let testoErrore = '';
11+
let errore = '';
4412

4513
if (campo === 'nominativo') {
46-
valido = controllaNominativo(nominativo.value);
47-
testoErrore = 'Deve contenere solo lettere e spazi';
14+
valido = /^[a-zA-Z\s]+$/.test(nominativo.value) && nominativo.value !== '';
15+
errore = 'Solo lettere e spazi';
4816
} else if (campo === 'eta') {
49-
valido = controllaEta(eta.value);
50-
testoErrore = 'Deve essere tra 18 e 100';
17+
const num = parseInt(eta.value);
18+
valido = num >= 18 && num <= 100;
19+
errore = 'Età tra 18 e 100';
5120
} else if (campo === 'consenso') {
5221
valido = consenso.checked;
53-
testoErrore = 'Devi accettare il consenso';
22+
errore = 'Accetta il consenso';
5423
} else if (campo === 'password') {
55-
valido = controllaPassword(password.value);
56-
testoErrore = 'Deve avere 8-20 caratteri, maiuscola, minuscola, numero e carattere speciale';
24+
valido = password.value.length >= 8 && password.value.length <= 20 &&
25+
/[A-Z]/.test(password.value) && /[a-z]/.test(password.value) &&
26+
/[0-9]/.test(password.value) && /[!@#$%^&*]/.test(password.value);
27+
errore = '8-20 caratteri, maiuscola, minuscola, numero e speciale';
5728
}
5829

30+
const divErrore = document.getElementById('errore-' + campo);
5931
if (valido) {
60-
nascondiErrore(campo);
32+
divErrore.classList.add('hidden');
6133
} else {
62-
mostraErrore(campo, testoErrore);
34+
divErrore.textContent = errore;
35+
divErrore.classList.remove('hidden');
6336
}
64-
6537
return valido;
6638
}
6739

68-
function pulisciErrori() {
40+
function pulisci() {
6941
document.getElementById('errore-nominativo').classList.add('hidden');
7042
document.getElementById('errore-eta').classList.add('hidden');
7143
document.getElementById('errore-consenso').classList.add('hidden');
7244
document.getElementById('errore-password').classList.add('hidden');
7345
erroriGlobali.classList.add('hidden');
7446
messaggio.classList.add('hidden');
75-
76-
nominativo.classList.remove('border-red-500', 'border-green-500');
77-
eta.classList.remove('border-red-500', 'border-green-500');
78-
password.classList.remove('border-red-500', 'border-green-500');
7947
}
8048

8149
nominativo.addEventListener('input', function() {
8250
const modalita = document.querySelector('input[name="modalita"]:checked').value;
83-
if (modalita === 'interattiva') {
84-
validaCampo('nominativo');
85-
}
51+
if (modalita === 'interattiva') validaCampo('nominativo');
8652
});
8753

8854
eta.addEventListener('input', function() {
8955
const modalita = document.querySelector('input[name="modalita"]:checked').value;
90-
if (modalita === 'interattiva') {
91-
validaCampo('eta');
92-
}
56+
if (modalita === 'interattiva') validaCampo('eta');
9357
});
9458

9559
consenso.addEventListener('change', function() {
9660
const modalita = document.querySelector('input[name="modalita"]:checked').value;
97-
if (modalita === 'interattiva') {
98-
validaCampo('consenso');
99-
}
61+
if (modalita === 'interattiva') validaCampo('consenso');
10062
});
10163

10264
password.addEventListener('input', function() {
10365
const modalita = document.querySelector('input[name="modalita"]:checked').value;
104-
if (modalita === 'interattiva') {
105-
validaCampo('password');
106-
}
66+
if (modalita === 'interattiva') validaCampo('password');
10767
});
10868

109-
const radioModalita = document.querySelectorAll('input[name="modalita"]');
110-
for (let i = 0; i < radioModalita.length; i++) {
111-
radioModalita[i].addEventListener('change', pulisciErrori);
112-
}
69+
document.querySelectorAll('input[name="modalita"]').forEach(function(radio) {
70+
radio.addEventListener('change', pulisci);
71+
});
11372

11473
form.addEventListener('submit', function(e) {
11574
e.preventDefault();
116-
11775
const modalita = document.querySelector('input[name="modalita"]:checked').value;
11876

11977
if (modalita === 'interattiva') {
120-
const nomeValido = validaCampo('nominativo');
121-
const etaValida = validaCampo('eta');
122-
const consensoValido = validaCampo('consenso');
123-
const passwordValida = validaCampo('password');
124-
125-
erroriGlobali.classList.add('hidden');
78+
const v1 = validaCampo('nominativo');
79+
const v2 = validaCampo('eta');
80+
const v3 = validaCampo('consenso');
81+
const v4 = validaCampo('password');
12682

127-
if (nomeValido && etaValida && consensoValido && passwordValida) {
83+
if (v1 && v2 && v3 && v4) {
12884
messaggio.className = 'mt-4 p-3 rounded-lg text-center font-semibold bg-green-100 text-green-700';
12985
messaggio.textContent = 'Dati corretti';
13086
messaggio.classList.remove('hidden');
131-
} else {
132-
messaggio.classList.add('hidden');
13387
}
134-
13588
} else {
136-
pulisciErrori();
137-
138-
const listaErrori = [];
89+
pulisci();
90+
const errori = [];
13991

140-
if (!controllaNominativo(nominativo.value)) {
141-
listaErrori.push('Nominativo: deve contenere solo lettere e spazi');
92+
if (!/^[a-zA-Z\s]+$/.test(nominativo.value) || nominativo.value === '') {
93+
errori.push('Nominativo: solo lettere e spazi');
14294
}
143-
if (!controllaEta(eta.value)) {
144-
listaErrori.push('Età: deve essere tra 18 e 100');
95+
if (parseInt(eta.value) < 18 || parseInt(eta.value) > 100) {
96+
errori.push('Età: tra 18 e 100');
14597
}
14698
if (!consenso.checked) {
147-
listaErrori.push('Consenso: devi accettarlo');
99+
errori.push('Consenso: devi accettarlo');
148100
}
149-
if (!controllaPassword(password.value)) {
150-
listaErrori.push('Password: 8-20 caratteri, maiuscola, minuscola, numero e carattere speciale');
101+
const pwd = password.value;
102+
if (pwd.length < 8 || pwd.length > 20 || !/[A-Z]/.test(pwd) || !/[a-z]/.test(pwd) ||
103+
!/[0-9]/.test(pwd) || !/[!@#$%^&*]/.test(pwd)) {
104+
errori.push('Password: requisiti non soddisfatti');
151105
}
152106

153-
if (listaErrori.length > 0) {
154-
erroriGlobali.innerHTML = '<strong>Errori:</strong><br>' + listaErrori.join('<br>');
107+
if (errori.length > 0) {
108+
erroriGlobali.innerHTML = '<strong>Errori:</strong><br>' + errori.join('<br>');
155109
erroriGlobali.classList.remove('hidden');
156-
messaggio.classList.add('hidden');
157110
} else {
158-
erroriGlobali.classList.add('hidden');
159111
messaggio.className = 'mt-4 p-3 rounded-lg text-center font-semibold bg-green-100 text-green-700';
160112
messaggio.textContent = 'Dati corretti';
161113
messaggio.classList.remove('hidden');

0 commit comments

Comments
 (0)