1
- const inputsNodeList = document . querySelectorAll ( "input" ) ;
2
-
3
1
const inputName = document . querySelector ( "input#name" ) ;
4
2
const inputEmail = document . querySelector ( "input#email" ) ;
5
3
const inputPassword = document . querySelector ( "input#password" ) ;
@@ -8,47 +6,95 @@ const inputConfPassword = document.querySelector("input#confirm-password");
8
6
const divsError = document . querySelectorAll ( ".error" ) ;
9
7
const divsSuccess = document . querySelectorAll ( ".success" ) ;
10
8
9
+ const buttonsShowHide = document . querySelectorAll ( ".show-hide" ) ;
10
+ const submitButton = document . querySelector ( 'input[type="submit"]' ) ;
11
+
12
+ const success = true ;
13
+ const error = false ;
14
+ const fieldsValid = [ error , error , error , error ] ;
15
+
16
+ const statusMessageDiv = document . createElement ( "span" ) ;
17
+ document . querySelector ( "h1" ) . appendChild ( statusMessageDiv ) ;
18
+
19
+ const writeMessageOnSubmit = ( innerText ) => {
20
+ statusMessageDiv . innerHTML = innerText ;
21
+ statusMessageDiv . style . color = "orange" ;
22
+ statusMessageDiv . style . position = "absolute" ;
23
+ statusMessageDiv . style . top = "220px" ;
24
+ return statusMessageDiv ;
25
+ } ;
26
+
27
+ buttonsShowHide . forEach ( ( button ) =>
28
+ button . addEventListener ( "click" , ( e ) => {
29
+ e . preventDefault ( ) ;
30
+ e . target . parentNode . classList . toggle ( "show" ) ;
31
+ e . target . parentNode . childNodes [ 1 ] . classList . toggle ( "security" ) ;
32
+ } )
33
+ ) ;
34
+
11
35
const validateUserName = ( e ) => {
12
36
e . preventDefault ( ) ;
13
- const usernameRegex = / ^ [ a - z A - Z а - я А - Я ї Ї є Є ґ Ґ 0 - 9 - \s] + $ / ;
37
+ const usernameRegex = / ^ [ a - z A - Z а - я А - Я і І ї Ї є Є ґ Ґ 0 - 9 - \s] + $ / ;
14
38
if ( ! usernameRegex . test ( e . key ) ) return false ;
15
39
e . target . value += e . key ;
16
40
renderInput ( ) ;
17
41
} ;
18
42
const validateEmail = ( e ) => {
19
43
const emailRegex = / ^ [ a - z 0 - 9 . _ - ] + @ [ a - z 0 - 9 . _ - ] + \. [ a - z ] { 2 , 6 } $ / i;
20
- if ( emailRegex . test ( inputEmail . value ) )
44
+ if ( emailRegex . test ( inputEmail . value . trim ( ) ) ) {
21
45
renderFieldStatus ( divsSuccess [ 1 ] , divsError [ 1 ] ) ;
22
- else renderFieldStatus ( divsError [ 1 ] , divsSuccess [ 1 ] ) ;
46
+ fieldsValid [ 1 ] = success ;
47
+ } else {
48
+ renderFieldStatus ( divsError [ 1 ] , divsSuccess [ 1 ] ) ;
49
+ fieldsValid [ 1 ] = error ;
50
+ }
23
51
} ;
24
52
const renderInput = ( ) => {
25
- if ( inputName . value === "" ) renderFieldStatus ( divsError [ 0 ] , divsSuccess [ 0 ] ) ;
26
- else renderFieldStatus ( divsSuccess [ 0 ] , divsError [ 0 ] ) ;
27
- } ;
28
- const renderFieldStatus = ( divShow , divHide ) => {
29
- divHide . classList . add ( "hide" ) ;
30
- divShow . classList . remove ( "hide" ) ;
53
+ inputName . onkeypress = validateUserName ;
54
+ if ( inputName . value . trim ( ) === "" ) {
55
+ renderFieldStatus ( divsError [ 0 ] , divsSuccess [ 0 ] ) ;
56
+ fieldsValid [ 0 ] = error ;
57
+ } else {
58
+ renderFieldStatus ( divsSuccess [ 0 ] , divsError [ 0 ] ) ;
59
+ fieldsValid [ 0 ] = success ;
60
+ }
31
61
} ;
32
62
const validatePassword = ( e ) => {
33
63
const passwordRegex = / ^ [ \S ] { 6 , 36 } $ / ;
34
- if ( passwordRegex . test ( inputPassword . value ) )
64
+ if ( passwordRegex . test ( inputPassword . value ) ) {
35
65
renderFieldStatus ( divsSuccess [ 2 ] , divsError [ 2 ] ) ;
36
- else renderFieldStatus ( divsError [ 2 ] , divsSuccess [ 2 ] ) ;
66
+ fieldsValid [ 2 ] = success ;
67
+ } else {
68
+ renderFieldStatus ( divsError [ 2 ] , divsSuccess [ 2 ] ) ;
69
+ fieldsValid [ 2 ] = error ;
70
+ }
37
71
validatePasswordConfirm ( ) ;
38
72
} ;
39
-
40
73
const validatePasswordConfirm = ( e ) => {
41
74
if (
42
75
( inputPassword . value !== "" ) &
43
76
( inputPassword . value === inputConfPassword . value )
44
- )
77
+ ) {
45
78
renderFieldStatus ( divsSuccess [ 3 ] , divsError [ 3 ] ) ;
46
- else renderFieldStatus ( divsError [ 3 ] , divsSuccess [ 3 ] ) ;
79
+ fieldsValid [ 3 ] = success ;
80
+ } else {
81
+ renderFieldStatus ( divsError [ 3 ] , divsSuccess [ 3 ] ) ;
82
+ fieldsValid [ 3 ] = error ;
83
+ }
84
+ } ;
85
+ const renderFieldStatus = ( divShow , divHide ) => {
86
+ divHide . classList . add ( "hide" ) ;
87
+ divShow . classList . remove ( "hide" ) ;
47
88
} ;
48
89
49
- inputName . onkeypress = validateUserName ;
50
90
inputName . oninput = renderInput ;
51
-
52
91
inputEmail . oninput = validateEmail ;
53
92
inputPassword . oninput = validatePassword ;
54
93
inputConfPassword . oninput = validatePasswordConfirm ;
94
+
95
+ submitButton . addEventListener ( "click" , ( e ) => {
96
+ e . preventDefault ( ) ;
97
+ const isValidForms = fieldsValid . every ( ( field ) => field ) ;
98
+ if ( isValidForms ) writeMessageOnSubmit ( "Welcome!" ) ;
99
+ else writeMessageOnSubmit ( "Authentafication failed" ) ;
100
+ } ) ;
0 commit comments