@@ -6,156 +6,108 @@ const password = document.getElementById('password');
66const erroriGlobali = document . getElementById ( 'errori-globali' ) ;
77const messaggio = document . getElementById ( 'messaggio' ) ;
88
9- function controllaNominativo ( valore ) {
10- return / ^ [ a - z A - 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-
419function 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 - z A - 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
8149nominativo . 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
8854eta . 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
9559consenso . 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
10264password . 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
11473form . 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 - z A - 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