teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2017/08/14 01:41

投稿

chelsy7110
chelsy7110

スコア596

answer CHANGED
@@ -1,22 +1,3 @@
1
- ```javascript
2
- $('.contact-form form').submit(function(){
3
- var error_flag = false;
4
- $(this).children('input, textarea').each(function(){
5
- var body = $(this).val();
6
- if (!body) {
7
- $(this).prev('.error-message').text('入力してください');
8
- error_flag = true;
9
- } else {
10
- $(this).prev('.error-message').text('');
11
- }
12
- });
13
-
14
- if (!error_flag) {
15
- $('.contact-form').html('<h4>お問い合わせありがとうございます。</h4>');
16
- }
17
- return false;
18
- });
19
- ```
20
1
  1行ずつ見ていきましょう
21
2
  ```javascript
22
3
  $('.contact-form form').submit(function(){
@@ -57,4 +38,24 @@
57
38
  これによって、入力項目は全て消えて、お問い合わせありがとうございますだけが残る。
58
39
  falseを返す。
59
40
 
60
- こんな感じの動きです。
41
+ こんな感じの動きです。
42
+
43
+ ---
44
+ 追記
45
+ 回答1,3,4
46
+ 「一つもエラーが無ければ」という条件のために必要です。
47
+ 下で```if(!error_flag)```という条件で```お問い合わせありがとうございます```と表示するとしています。
48
+ これは**error_flagを反転させたものがtrueならば**という意味です。
49
+ すなわち**error_flagがfalseならば**という条件です。
50
+ error_flagがeachの中で書き換えられなければ、お問い合わせありがとうございますに書き換えなさいという風になります。
51
+
52
+ if(!body)の意味ですが、ifの括弧の中身はtrueかfalseで判定されます。
53
+ [http://qiita.com/phi/items/723aa59851b0716a87e3](http://qiita.com/phi/items/723aa59851b0716a87e3)
54
+ ここを見ると```"hoge"```は**true**、```""```は**false**と書いてあります。
55
+ bodyはinputやtextareaの内容ですので、何も入力されていないとfalseになり、それを反転させているので、```if(!body)```はbodyに何も入っていなければ実行されます。
56
+ eachの中でbodyが一回でも空だった場合、error_flagはtrueになります。
57
+ error_flagがfalseのままであるには、bodyには全部何かが入っている(フォームに全て入力されている)という条件が必要になります。
58
+ それが満たされるとき、お問い合わせありがとうございますに書き換えなさいという風になります。
59
+
60
+ 回答2
61
+ その通りです。