質問: true; } else { $(this).prev('.error-message').text(''); } }); if (!error_flag) { $('.contact-form').html('お問い合わせありがとうございます。'); } return false; }); }); コード ```
回答: まず、`error_flag` の件ですが、このコードでは、`submit` ボタンが押されたとき、そのフォーム内の `input` や `textarea` をひとつずつ調べ、値が空でないかチェックしています。`each()` の中で個々の入力値をチェックしているわけですね。 で、このループを抜けたあと、`error_flag` を見ていますが、これは先のループ内でひとつでも空のものがあれば `true` になっています。逆に言えば、すべての `input`・`textarea` にちゃんと入力がなされていたときにだけ `false` になります。 整理すると、`if (!body) {` のところで調べているのは個々の入力値、`if (!error_falg) {` のところで調べているのはフォーム全体として入力がちゃんとされていたか、ということです。 次に `return false;` についてです。イベントハンドラの中で `false` を返すと、デフォルトのイベントをキャンセルし、それ以上のイベントの伝搬をさせません。簡単に言えば、ここで `return false;` しないと `submit` のデフォルトの動作、すなわち、フォームの送信が行なわれますが、`return false;` していることによりフォーム送信は行われません。