@@ -13,6 +13,11 @@ class Registration extends Component {
13
13
username : "" ,
14
14
password : "" ,
15
15
email : "" ,
16
+ } ,
17
+ formError : {
18
+ username : false ,
19
+ password : false ,
20
+ email : false ,
16
21
}
17
22
}
18
23
}
@@ -27,12 +32,37 @@ class Registration extends Component {
27
32
...this . state . formValue ,
28
33
[ name ] : value ,
29
34
35
+ } ,
36
+ formError : {
37
+ ...this . state . formError ,
38
+ [ name ] : false ,
39
+
30
40
}
31
41
} )
32
42
}
33
43
34
44
handleSubmit = ( ) => {
35
- console . log ( this . state . formValue )
45
+ let formError = { } ;
46
+ let formData = this . state . formValue ;
47
+ let isValid = true ;
48
+ Object . keys ( formData ) . forEach ( key => {
49
+ if ( ! formData [ key ] ) {
50
+ isValid = false ;
51
+ formError = {
52
+ ...formError ,
53
+ [ key ] : true
54
+ }
55
+ }
56
+ } )
57
+ if ( ! isValid ) {
58
+ this . setState ( {
59
+ formError : {
60
+ ...this . state . formError ,
61
+ ...formError
62
+ }
63
+ } )
64
+ return ;
65
+ }
36
66
37
67
axios . post ( '/core/api/register/' , {
38
68
...this . state . formValue
@@ -57,13 +87,22 @@ class Registration extends Component {
57
87
</ div >
58
88
< div className = "card-body" >
59
89
< form className = "login-form ml-4 mb-4 mr-4 mt-2" >
60
- < label > Username</ label >
61
- < input defaultValue = "" className = "" type = "text" onChange = { e => this . handleOnChange ( e ) } name = "username" value = { username } />
62
- < label className = "mt-3" > Email</ label >
63
- < input defaultValue = "" className = "" type = "text" onChange = { e => this . handleOnChange ( e ) } name = "email" value = { email } />
64
- < label className = "mt-3" > Password</ label >
65
- < input defaultValue = "" className = "" type = "text" onChange = { e => this . handleOnChange ( e ) } name = "password" value = { password } />
66
- < input className = "mt-5 btn btn-primary btn-submit btn-block" value = "Submit" onClick = { e => this . handleSubmit ( e ) } type = "button" />
90
+ < div >
91
+ < label > Username</ label >
92
+ < input className = "" type = "text" onChange = { e => this . handleOnChange ( e ) } name = "username" value = { username } />
93
+ < span className = "text-danger" > { this . state . formError . username && "Please enter your username" } </ span >
94
+ </ div >
95
+ < div >
96
+ < label className = "mt-3" > Email</ label >
97
+ < input className = "mb-2" type = "text" onChange = { e => this . handleOnChange ( e ) } name = "email" value = { email } />
98
+ < span className = "text-danger" > { this . state . formError . email && "Please enter your email" } </ span >
99
+ </ div >
100
+ < div >
101
+ < label className = "mt-3" > Password</ label >
102
+ < input className = "mb-2" type = "text" onChange = { e => this . handleOnChange ( e ) } name = "password" value = { password } />
103
+ < span className = "text-danger" > { this . state . formError . password && "Please enter your password" } </ span >
104
+ </ div >
105
+ < input className = "mt-4 btn btn-primary btn-submit btn-block" value = "Submit" onClick = { e => this . handleSubmit ( e ) } type = "button" />
67
106
68
107
</ form >
69
108
< p className = "ml-4" > Already have an account?< Link className = "ml-1" to = { "/login" } > Login</ Link > </ p >
0 commit comments