HTML5制約検証のイントロ
インタラクティブなWebサイトやアプリケーションは、私たちに可能にするフォームがなければ想像できません。 ユーザーとつながる, と データを入手する 円滑な取引を確保するために必要なのです。必要です 有効なユーザー入力, しかし、我々はそれを次のようにして取得する必要があります。 イライラしない 私たちのユーザーが多すぎる.
スマートに選択されたUXデザインパターンを使ってフォームの使いやすさを向上させることができますが、HTML 5には制約検証のためのネイティブメカニズムもあります。 フロントエンドで入力エラーを捉える.
この記事では、焦点を当てます。 ブラウザ提供の制約検証, そして、フロントエンド開発者がどのようにできるかを調べてください。 HTML5を使用した安全な有効なユーザー入力.
フロントエンドの入力検証が必要な理由
入力検証 2つの主な目標があります。取得するコンテンツは以下のとおりです。
1.便利な
必要です 使えるデータ. 私たちは人々を入らせる必要があります 正しい形式の現実的なデータ. たとえば、今日生きている人は200年前に生まれませんでした。このようなデータを取得することは、最初は面白そうに見えるかもしれませんが、長期的には厄介なことであり、データベースに無用なデータを取り込むことになります。.
2.安全
セキュリティについて言及するとき、これは我々がする必要があることを意味します 悪意のあるコンテンツの挿入を防ぐ - 故意か偶然か.
有用性(妥当なデータを取得する)を達成することができます クライアント側のみ, バックエンドチームはこれをあまりやり過ぎることはできません。達成する セキュリティ, フロントエンドとバックエンドの開発者は協力する必要があります。.
フロントエンド開発者がクライアント側で入力を適切に検証すると、 バックエンドチームははるかに少ない脆弱性に対処しなければならないでしょう. ハッキング(サイト)を伴うことが多い 追加データを送信する, または 間違った形式のデータ. 開発者はこのようなセキュリティホールと戦うことができ、フロントエンドからうまく戦うことができます。.
たとえば、このPHPセキュリティガイドでは、クライアント側でできることすべてをチェックすることを推奨しています。彼らは、次のような多くの例を挙げてフロントエンドの入力検証の重要性を強調しています。
「入力検証は、極端に制限された値、たとえば整数、英数字文字列、またはHTTP URLである必要がある場合などに最も効果的に機能します。」
フロントエンドの入力検証では、私たちの仕事は 合理的な制約を課す ユーザー入力HTML5の制約検証機能は私たちにそうする手段を提供します.
HTML5の制約検証
HTML 5以前は、フロントエンド開発者は JavaScriptでユーザー入力を検証する, これは面倒でエラーが発生しやすいプロセスでした。クライアントサイドのフォーム検証を改善するために、HTML5は 制約検証 最近のブラウザで動作するアルゴリズム 送信された入力の有効性を確認します.
評価を行うために、アルゴリズムは次のものを使用します。 入力要素の検証関連の属性, といった ,
, そして
. ブラウザで制約の検証がどのように段階的に行われるかを知りたい場合は、このWhatWGドキュメントをご覧ください。.
HTML5の制約検証機能のおかげで、私たちはすべてを実行することができます 標準入力検証タスク クライアント側 JavaScriptなし、HTML5のみ.
より複雑な検証関連のタスクを実行するために、HTML 5では次のものが提供されています。 制約検証JavaScript API カスタム検証スクリプトを設定するために使用できます.
セマンティック入力タイプで検証する
HTML5が紹介しました 意味入力タイプ それは - ユーザエージェントのための要素の意味を示すこととは別に - も使用することができます ユーザー入力を検証する ユーザーを特定の入力形式に制限する.
HTML5以前にすでに存在していた入力型の他に(テキスト
, パスワード
, 提出する
, リセット
, 無線
, チェックボックス
, ボタン
, 隠された
)、私達はまた次を使用してもいいです セマンティックHTML5入力タイプ: Eメール
,電話
,URL
,数
,時間
,日付
,日付時刻
,日時ローカル
, 月
,週間
, 範囲
, サーチ
,色
.
HTML5の入力タイプは、古いブラウザでは安全に使用できます。 サポートしていないブラウザのフィールド.
ユーザーが間違った入力タイプを入力したときに何が起こるか見てみましょう。次のコードでEメール入力フィールドを作成したとします。
ユーザーが電子メール形式を使用しない文字列を入力すると、制約検証アルゴリズム フォームを送信しない, そして エラーメッセージを返す:
同じ規則が他の入力タイプにも適用されます。例えば、 type = "url"
ユーザーはURL形式に従う入力のみを送信できます(次のようなプロトコルで始まります)。 http://
または ftp://
).
一部の入力タイプは、 ユーザーが間違った入力フォーマットを入力することすら許可しません, 例えば 色
そして 範囲
.
私達が使用すれば 色
ユーザーがカラーピッカーから色を選択するかデフォルトの黒のままにするかのどちらかに制限されている入力タイプ。入力フィールドは 設計による制約, そのため、ユーザーエラーの可能性はあまりありません。.
適切な場合は、使用することを検討する価値があります これらの設計制約の入力タイプと同様に機能するHTMLタグ。ユーザーがドロップダウンリストから選択することを可能にします.
HTML5の検証属性を使う
セマンティック入力型を使用すると、ユーザーが送信を許可される内容に一定の制約が設定されますが、多くの場合、もう少し先に進みたいと思います。これが 検証関連の属性 の タグは私たちを助けることができる.
検証関連の属性は特定の入力タイプに属します(これらは使用できません)。 すべて さらに制約を課すタイプ).
1. 必須
必ず有効な入力を得るため
の 必須
attributeは最も有名なHTML検証属性です。それは ブール属性 それはそれを意味します 値をとらない, 私たちはただそれを内部に配置するだけです。 使用したい場合はtag:
ユーザーが必須の入力フィールドに値を入力するのを忘れた場合、ブラウザは エラーメッセージを返す それは彼らに分野を埋めるように警告します、そして彼らは フォームを送信できません 彼らが有効な入力を提供するまで。それが常に重要なのです。 視覚的に印を付ける ユーザーへの必須フィールド.
の 必須
属性は 以下の入力タイプと併用: テキスト
, サーチ
, URL
, 電話
, Eメール
, パスワード
, 日付
, 日付時刻
, 日時ローカル
, 月
, 週間
,時間
, 数
, チェックボックス
, 無線
, ファイル
, とプラス そして
HTMLタグ.
2. 分
, 最大
そして ステップ
番号検証用
の 分
, 最大
そして ステップ
属性は私たちを可能にします 数値入力フィールドに制約を課す. 彼らは一緒に使用することができます 範囲
, 数
, 日付
, 月
, 週間
, 日付時刻
, 日時ローカル
, そして 時間
入力タイプ.
の 分
そして 最大
属性は簡単にするための素晴らしい方法を提供します。 不当なデータを除外する. たとえば、次の例では、ユーザーに18歳から120歳までの年齢を送信するように強制しています。.
制約検証アルゴリズムが次の値より小さいユーザー入力にぶつかったとき 分
, またはより大きい 最大
値、バックエンドに到達できないようにし、エラーメッセージを返す.
の ステップ
属性 数値の間隔を指定します 数値入力フィールドの有効値間たとえば、うるう年からのみユーザーに選択させたい場合は、 step = "4"
フィールドに対する属性。以下の例では、 数
ないので入力タイプ type = "年"
HTML5では.
事前設定された制約により、ユーザーは1972年から2016年までのうるう年から選択することができます。 数
入力方式。入力フィールドに手動で値を入力することもできますが、それが制約を満たさない場合、ブラウザはエラーメッセージを返します。.
3. 最大長
テキスト長検証用
の 最大長
属性はそれを可能にします 最大文字長を設定する テキスト入力フィールド用。それは一緒に使用することができます テキスト
, サーチ
, URL
, 電話
, Eメール
そして パスワード
入力タイプ、および HTMLタグ.
の 最大長
属性は、特定の文字数を超えることができない電話番号フィールドや、ユーザーが特定の長さを超えて記述したくない連絡フォームに最適なソリューションです。.
以下のコードスニペットは後者の例を示しています、それは500文字にユーザメッセージを制限します.
の 最大長
属性 エラーメッセージを返さない, しかし、ブラウザは単に指定された文字数以上の文字をユーザに入力させません。それがそれが重要である理由です 制約についてユーザーに通知する, そうでなければ、なぜ彼らはタイピングを続けることができないのか理解できないでしょう。.
4. パターン
正規表現の検証用
の パターン
属性により、 正規表現を使う 入力検証プロセスで。正規表現は 定義済みの文字セット それは特定のパターンを形成します。パターンに続く文字列を検索するため、またはパターンによって定義された特定のフォーマットを強制するためにそれを使用することができます。.
とともに パターン
後者のことができる属性 - ユーザーが自分の入力を以下の形式で送信することを制限します。 与えられた正規表現にマッチ.
の パターン
attributeには多くのユースケースがありますが、私たちがやりたいときに特に便利です。 パスワードフィールドを検証する.
以下の例では、ユーザーは最低8文字のパスワードを入力する必要があります。少なくとも1文字と1番号を使用します(私が使用した正規表現のソース).
あといくつか
この記事では、私たちはどのようにを利用するかを見ました。 ブラウザ提供のフォーム検証 HTML5のネイティブ制約検証アルゴリズムによって提供されます。カスタム検証スクリプトを作成するには、フォーム検証スキルを向上させるための次のステップになることができるConstraint Validation APIを使用する必要があります。.
HTML5フォームは支援技術によってアクセス可能であるため、必ずしも私たちは必ずしもこれを使う必要はありません。 アリア必須
スクリーンリーダーの必須入力フィールドをマークするためのARIA属性。ただし、古いブラウザにアクセシビリティサポートを追加することは依然として便利です。それはまた可能です 制約検証からオプトアウト を追加して 無効化
へのブール属性 素子.