質問編集履歴

1

コードの追加

2018/10/15 03:08

投稿

kazoogon
kazoogon

スコア281

test CHANGED
File without changes
test CHANGED
@@ -32,6 +32,8 @@
32
32
 
33
33
 
34
34
 
35
+
36
+
35
37
  class Register extends Component {
36
38
 
37
39
  constructor(props) {
@@ -86,6 +88,26 @@
86
88
 
87
89
 
88
90
 
91
+ tmpClassName = tmp => {
92
+
93
+ const prefix = 'form-control ';
94
+
95
+
96
+
97
+ switch (tmp) {
98
+
99
+ case '': return prefix + '';
100
+
101
+ case true: return prefix + 'is-valid';
102
+
103
+ case false: return prefix + 'is-invalid';
104
+
105
+ }
106
+
107
+ };
108
+
109
+
110
+
89
111
  onChange = e => {
90
112
 
91
113
  const currentName = e.target.name;
@@ -94,7 +116,7 @@
94
116
 
95
117
 
96
118
 
97
- //chrome拡張機能react確認しても、valueが更新されない(というか消える)
119
+ //ここで、valueが更新されないというか消える
98
120
 
99
121
  this.setState({
100
122
 
@@ -106,7 +128,183 @@
106
128
 
107
129
  });
108
130
 
131
+
132
+
133
+ switch(currentName){
134
+
135
+ case 'firstName':
136
+
137
+ if(currentValue !== '' && currentValue.length >= 2) {
138
+
139
+ this.setState({
140
+
141
+ firstName: {
142
+
143
+ status: true
144
+
109
- }
145
+ }
146
+
147
+ })
148
+
149
+ }else{
150
+
151
+ this.setState({
152
+
153
+ firstName: {
154
+
155
+ status: false
156
+
157
+ }
158
+
159
+ })
160
+
161
+ }
162
+
163
+ break;
164
+
165
+
166
+
167
+ case 'lastName':
168
+
169
+ if(currentValue !== '' && currentValue.length >= 2) {
170
+
171
+ this.setState({
172
+
173
+ lastName: {
174
+
175
+ status: true
176
+
177
+ }
178
+
179
+ })
180
+
181
+ }else{
182
+
183
+ this.setState({
184
+
185
+ lastName: {
186
+
187
+ status: false
188
+
189
+ }
190
+
191
+ })
192
+
193
+ }
194
+
195
+ break;
196
+
197
+
198
+
199
+ case 'email':
200
+
201
+ const invalidEmail = currentValue.match(/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*$/);
202
+
203
+ if(invalidEmail && currentValue !== ''){
204
+
205
+ this.setState({
206
+
207
+ email: {
208
+
209
+ status: true
210
+
211
+ }
212
+
213
+ })
214
+
215
+ }else{
216
+
217
+ this.setState({
218
+
219
+ email: {
220
+
221
+ status: false
222
+
223
+ }
224
+
225
+ })
226
+
227
+ }
228
+
229
+ break;
230
+
231
+
232
+
233
+ case 'password':
234
+
235
+ if(currentValue.length >= 6){
236
+
237
+ this.setState({
238
+
239
+ password: {
240
+
241
+ status: true
242
+
243
+ }
244
+
245
+ })
246
+
247
+ }else{
248
+
249
+ this.setState({
250
+
251
+ password: {
252
+
253
+ status: false
254
+
255
+ }
256
+
257
+ })
258
+
259
+ }
260
+
261
+ break;
262
+
263
+
264
+
265
+ case 'password2':
266
+
267
+ if(currentValue.length >= 6 && currentValue == this.state.password.value){
268
+
269
+ this.setState({
270
+
271
+ password2: {
272
+
273
+ status: true
274
+
275
+ }
276
+
277
+ })
278
+
279
+ }else{
280
+
281
+ this.setState({
282
+
283
+ password2: {
284
+
285
+ status: false
286
+
287
+ }
288
+
289
+ })
290
+
291
+ }
292
+
293
+ break;
294
+
295
+ }
296
+
297
+ };
298
+
299
+
300
+
301
+ onSubmit = e => {
302
+
303
+ e.preventDefault();
304
+
305
+
306
+
307
+ }
110
308
 
111
309
 
112
310
 
@@ -260,7 +458,29 @@
260
458
 
261
459
 
262
460
 
461
+ <button
462
+
463
+ type="submit"
464
+
465
+ /*statusのlength取って、classを加えていく感じやな*/
466
+
467
+ className={`btn btn-primary
468
+
469
+ ${this.state.firstName.status? 'quarter' : ''} +
470
+
471
+ ${this.state.lastName.status? 'half' : ''} +
472
+
263
- <button type="submit" className="btn btn-primary">Submit</button>
473
+ ${this.state.email.status? 'three-quarters' : ''}`
474
+
475
+ }
476
+
477
+ disabled
478
+
479
+ >
480
+
481
+ Submit
482
+
483
+ </button>
264
484
 
265
485
 
266
486
 
@@ -284,6 +504,10 @@
284
504
 
285
505
 
286
506
 
507
+
508
+
509
+
510
+
287
511
  ```
288
512
 
289
513