LoginSignup
1
0

More than 1 year has passed since last update.

フォームバリデーション(Forms validations)について解説してみた。

Last updated at Posted at 2021-05-12

・初めに

この記事は以下の方を対象としています。また、記事修正のコメントやLGTMなどモチベーションにつながるのでポチっとお願いします‼

  • Forms validationsについて知りたい方
  • 初学者の方
  • フロントエンドエンジニア志望の方

・導入

閲覧ありがとうございます。この記事は、初学者がフロントエンド目指してロードマップに沿ってアウトプットしていく記事になります。
こちらの記事はPart4です。最初からご覧になりたいかたは、以下よりどうぞ。

・記事一覧

part1: Internet【HTTP,Browsers】
part2: Internet【DNS,Domain,Hosting】
part3: HTML【basics】

・Part4 HTML【Forms validationos】

Forms validationsとは

データをサーバーへ送信する前に、フォームに入力された情報が正しく入力されているかを検証(validation)することを、クライアント側で行われるフォームバリデーションといいます。
フォームバリデーションには、ブラウザーで行われる検証であるクライアント側検証と、サーバー側で行われるサーバー側検証がありますが、今回はクライアントサイドの話をまとめていきたいと思います。

例えば、有名なサイトの登録フォームに行きフォームに入力漏れがあると、次のようなメッセージが表示されることがあると思います。これはフォームバリデーションによって表示されています。

・「このフィールドは必須です」
・「有効なメールアドレスを入力してください」
・「パスワードは 8 文字から 30 文字の間で、1 文字以上の大文字、記号、数字を含む必要があります。」

なぜフォームバリデーションが必要かというと、1つはユーザーが正しい情報を入力しない場合、ユーザーのデータが誤った形式で保存されたり、アプリケーションが正しく動作しないことがあるため。2つ目はユーザーのデータを保護することにつながるため。そして3つ目は、保護のないフォームを悪用して、そのフォームを一部に持つアプリケーションに不正アクセスする方法がたくさんあるためです。
まとめると、フォームバリデーションはユーザーの操作のしやすさがあがるだけでなく、通信を保護することができるなど、多くのメリットがあるということが言えます。

validationの方法

form validationの方法はいくつかあります。こちらは丸暗記というよりは、使うときになったら調べるスタンスでいいと思います。今回はHTMLで行う基本的な方法についてみていきます。

コード

簡単に以下のコードを用意しました。

hoge.html
~~
<form>
  <label for="choose">Which do you like banana or apple?</label>
  <input id="choose" name="i_like">
  <button>Submit</button>
</form>
~~
foo.css
input:invalid {
  border: 2px solid red;
}

input:valid {
  border: 2px solid black;
}

このコードは、好きな果物をbananaかappleから選べる入力欄です。単純なテキストの<input>とそれに合わせたラベル、送信の<button>から成ります。送信が成功なら、cssのinput:validクラスが適用され、失敗なら、input:invalidクラスが適用されます。

HTMLのrequred属性を使用する

required属性は、使うのが簡単なHTMLのバリデーション機能です。入力欄を必須にしたい場合はこの属性を使用します。

<form>
  <label for="choose">Which do you like banana or apple?</label>
  <input id="choose" name="i_like" required>
  <button>Submit</button>
</form>
input:invalid {
  border: 2px solid red;
}
input:invalid:required {
  background-image: linear-gradient(to right, pink, lightgreen);
}
input:valid {
  border: 2px solid black;
}

この CSS によって、入力が妥当でない場合には、入力を赤線で境界線を描きますが、入力が妥当な場合には、黒線で境界線を描きます。要求された値があり、値が妥当でないときは背景にピンクとライトグリーンのグラデーションを追加します。何も入力されないときは、デフォルトのエラーメッセージ(「このフィールドは入力必須です。」) が表示され、フォームの送信を阻止します。

まとめ

今回は、簡単なフォームバリデーションの使用方法と、バリデーションについてまとめていきました。バリデーションの方法はこのほかにもJavascriptを使用した方法や、正規表現を使用した方法があります。
また、Formのテンプレートやコードは多く公開されていますので、調べてみると勉強になるかもしれません。

次回予告

ここまで、Forms validationsついて書いてきました。次回はConventions and Best Practices(HTMLの従うべき慣習)についてです。次回もよろしくお願いします。

参考文献

MDN Web Docs

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0