HTML フォームバリデーション
1. JavaScriptによるフォームバリデーション
HTMLのフォームバリデーション(入力チェック)は、JavaScriptを使用して実装することができます。
例えば、フォームの入力フィールド(fname)が空の場合、この関数はアラートメッセージを表示し、false を返すことでフォームの送信を中断させます。
1.1 JavaScriptのコード例
function validateForm() {
// フォーム "myForm" 内の "fname" フィールドの値を取得
let x = document.forms["myForm"]["fname"].value;
if (x == "") {
alert("名前は必須入力項目です");
return false; // 送信をキャンセル
}
}この関数は、フォームが送信(サブミット)される際に呼び出すことができます。
1.2 HTMLフォームのコード例
<form name="myForm" action="/action_page.php" onsubmit="return validateForm()" method="post">
名前: <input type="text" name="fname">
<input type="submit" value="送信">
</form>2. 数値入力のバリデーション
JavaScriptは、数値入力の検証にも頻繁に利用されます。
例えば、「1から10までの数値を入力してください」といった制約を設けることが可能です。
3. HTMLによる自動フォームバリデーション
HTML5以降、フォームバリデーションはブラウザによって自動的に実行できるようになりました。
フォームフィールド(fname)が空の場合、 required 属性を指定することで、そのフォームの送信を自動的に防ぐことができます。
3.1 HTMLによる実装例
<form action="/action_page.php" method="post">
<input type="text" name="fname" required>
<input type="submit" value="送信">
</form>※注意:HTMLによる自動バリデーションは、Internet Explorer 9以前の古いブラウザでは動作しません。
4. データバリデーションとは
データバリデーションとは、ユーザーによる入力内容がクリーンで、正しく、かつシステムにとって有用であることを確認するプロセスです。
一般的なバリデーションのタスクには以下が含まれます:
- ユーザーが必須項目をすべて入力しているか?
- ユーザーが有効な日付を入力しているか?
- 数値入力フィールドにテキストが入力されていないか?
多くの場合、データバリデーションの目的は、ユーザー入力の正確性を確保することにあります。
バリデーションはさまざまなメソッドで定義でき、また複数の方法で展開されます。
- サーバーサイドバリデーション(Server side validation): 入力がサーバーに送信された後、ウェブサーバーによって実行される検証。
- クライアントサイドバリデーション(Client side validation): 入力がサーバーに送信される前、ウェブブラウザによって実行される検証。
5. HTML制約検証(Constraint Validation)
HTML5では、制約検証(Constraint Validation)と呼ばれる新しいバリデーションの概念が導入されました。
HTML制約検証は、以下の要素に基づいています:
- 制約検証のための HTML入力属性(Input Attributes)
- 制約検証のための CSS擬似セレクター(CSS Pseudo Selectors)
- 制約検証のための DOMプロパティおよびメソッド
6. 制約検証のためのHTML入力属性
| 属性 | 説明 |
|---|---|
| disabled | 入力エレメントを無効化する |
| max | 入力エレメントの最大値を指定する |
| min | 入力エレメントの最小値を指定する |
| pattern | 入力値が準拠すべきパターン(正規表現)を指定する |
| required | そのフィールドが入力必須であることを指定する |
| type | 入力エレメントの型(number, emailなど)を指定する |
詳細なリストについては、HTML Input Attributes を参照してください。
7. 制約検証のためのCSS擬似セレクター
| セレクター | 説明 |
|---|---|
| :disabled | "disabled" 属性が指定された入力エレメントを選択する |
| :invalid | 無効な値(制約に反する値)を持つ入力エレメントを選択する |
| :optional | "required" 属性が指定されていない入力エレメントを選択する |
| :required | "required" 属性が指定されている入力エレメントを選択する |
| :valid | 有効な値を持つ入力エレメントを選択する |