回答編集履歴

3

テキスト修正

2019/08/24 13:44

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -121,3 +121,39 @@
121
121
  });
122
122
 
123
123
  ```
124
+
125
+
126
+
127
+ ### 追記2
128
+
129
+
130
+
131
+ フォームに submit イベントのハンドラを設定するほうのコードで、
132
+
133
+ ```
134
+
135
+ document.forms.input_form.addEventListener('submit', function(e) {
136
+
137
+ ```
138
+
139
+ ```
140
+
141
+ let user_name = this.name.value;
142
+
143
+ ```
144
+
145
+ と、アロー `(e) => { ・・・ }` ではなく `function(e) {・・・}` と書くことにより、 `this` にフォームが入ってきます。アローを使って、`this`を使わないとするならば、たとえば以下でもよいです。
146
+
147
+
148
+
149
+ ```javascript
150
+
151
+ const form = document.forms.input_form;
152
+
153
+
154
+
155
+ form.addEventListener('submit', () => {
156
+
157
+ let user_name = form.name.value;
158
+
159
+ ```

2

テキスト修正

2019/08/24 13:44

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  document.forms.input_form.addEventListener('submit', function(e) {
24
24
 
25
- e.preventDefault();
25
+ let valid = true; // 1つでもバリデーションエラーの項目があれば false にするフラグ
26
26
 
27
27
  let user_name = this.name.value;
28
28
 
@@ -32,7 +32,21 @@
32
32
 
33
33
  console.log('名前が入力されていません');
34
34
 
35
+ valid = false;
36
+
35
37
  }
38
+
39
+
40
+
41
+ // ・・・他の項目のバリデーション
42
+
43
+
44
+
45
+ // すべてのバリデーションが終わった後、valid フラグがfalse なら、フォームをサブミットしないようにする。
46
+
47
+ if(!valid)
48
+
49
+ e.preventDefault();
36
50
 
37
51
  });
38
52
 

1

テキスト修正

2019/08/24 12:50

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -41,3 +41,69 @@
41
41
  });
42
42
 
43
43
  ```
44
+
45
+
46
+
47
+ ### 追記
48
+
49
+
50
+
51
+ 上記のように修正するか、もしくは 送信ボタンにイベントハンドラを設定するのであれば、送信ボタンを以下
52
+
53
+ ```html
54
+
55
+ <input type="button" id="btn" value="送信">
56
+
57
+ ```
58
+
59
+
60
+
61
+ のように `type="submit"` ではなく、 `type="button"` にして、普通のボタンにしておいて、ボタンのクリックハンドラを、たとえば、以下のような内容で設定します。
62
+
63
+
64
+
65
+ ```javascript
66
+
67
+ document.addEventListener('DOMContentLoaded',function(){
68
+
69
+
70
+
71
+ document.getElementById('btn').addEventListener('click', (e) => {
72
+
73
+ const form = document.forms.input_form;
74
+
75
+ let valid = true; // 1つでもバリデーションエラーの項目があれば false にするフラグ
76
+
77
+
78
+
79
+ let user_name = form.name.value;
80
+
81
+ console.log(user_name);
82
+
83
+ if(user_name == ''){
84
+
85
+ console.log('名前が入力されていません');
86
+
87
+ valid = false;
88
+
89
+ }
90
+
91
+
92
+
93
+ // ・・・他の項目のバリデーション
94
+
95
+
96
+
97
+ // 他のバリデーションも全部通ったら、フォームをサブミットする。
98
+
99
+ if (valid)
100
+
101
+ form.submit();
102
+
103
+ });
104
+
105
+
106
+
107
+ });
108
+
109
+ ```