回答編集履歴
3
テキスト修正
answer
CHANGED
@@ -59,4 +59,22 @@
|
|
59
59
|
});
|
60
60
|
|
61
61
|
});
|
62
|
+
```
|
63
|
+
|
64
|
+
### 追記2
|
65
|
+
|
66
|
+
フォームに submit イベントのハンドラを設定するほうのコードで、
|
67
|
+
```
|
68
|
+
document.forms.input_form.addEventListener('submit', function(e) {
|
69
|
+
```
|
70
|
+
```
|
71
|
+
let user_name = this.name.value;
|
72
|
+
```
|
73
|
+
と、アロー `(e) => { ・・・ }` ではなく `function(e) {・・・}` と書くことにより、 `this` にフォームが入ってきます。アローを使って、`this`を使わないとするならば、たとえば以下でもよいです。
|
74
|
+
|
75
|
+
```javascript
|
76
|
+
const form = document.forms.input_form;
|
77
|
+
|
78
|
+
form.addEventListener('submit', () => {
|
79
|
+
let user_name = form.name.value;
|
62
80
|
```
|
2
テキスト修正
answer
CHANGED
@@ -10,12 +10,19 @@
|
|
10
10
|
document.addEventListener('DOMContentLoaded',function(){
|
11
11
|
|
12
12
|
document.forms.input_form.addEventListener('submit', function(e) {
|
13
|
-
|
13
|
+
let valid = true; // 1つでもバリデーションエラーの項目があれば false にするフラグ
|
14
14
|
let user_name = this.name.value;
|
15
15
|
console.log(user_name);
|
16
16
|
if(user_name == ''){
|
17
17
|
console.log('名前が入力されていません');
|
18
|
+
valid = false;
|
18
19
|
}
|
20
|
+
|
21
|
+
// ・・・他の項目のバリデーション
|
22
|
+
|
23
|
+
// すべてのバリデーションが終わった後、valid フラグがfalse なら、フォームをサブミットしないようにする。
|
24
|
+
if(!valid)
|
25
|
+
e.preventDefault();
|
19
26
|
});
|
20
27
|
|
21
28
|
});
|
1
テキスト修正
answer
CHANGED
@@ -19,4 +19,37 @@
|
|
19
19
|
});
|
20
20
|
|
21
21
|
});
|
22
|
+
```
|
23
|
+
|
24
|
+
### 追記
|
25
|
+
|
26
|
+
上記のように修正するか、もしくは 送信ボタンにイベントハンドラを設定するのであれば、送信ボタンを以下
|
27
|
+
```html
|
28
|
+
<input type="button" id="btn" value="送信">
|
29
|
+
```
|
30
|
+
|
31
|
+
のように `type="submit"` ではなく、 `type="button"` にして、普通のボタンにしておいて、ボタンのクリックハンドラを、たとえば、以下のような内容で設定します。
|
32
|
+
|
33
|
+
```javascript
|
34
|
+
document.addEventListener('DOMContentLoaded',function(){
|
35
|
+
|
36
|
+
document.getElementById('btn').addEventListener('click', (e) => {
|
37
|
+
const form = document.forms.input_form;
|
38
|
+
let valid = true; // 1つでもバリデーションエラーの項目があれば false にするフラグ
|
39
|
+
|
40
|
+
let user_name = form.name.value;
|
41
|
+
console.log(user_name);
|
42
|
+
if(user_name == ''){
|
43
|
+
console.log('名前が入力されていません');
|
44
|
+
valid = false;
|
45
|
+
}
|
46
|
+
|
47
|
+
// ・・・他の項目のバリデーション
|
48
|
+
|
49
|
+
// 他のバリデーションも全部通ったら、フォームをサブミットする。
|
50
|
+
if (valid)
|
51
|
+
form.submit();
|
52
|
+
});
|
53
|
+
|
54
|
+
});
|
22
55
|
```
|