HTML5のcheckValidity()メソッドとは?使い方とサンプルコードを解説
checkValidity()メソッドの概要
HTML5で導入されたcheckValidity()メソッドは、フォーム要素や入力フィールドの値が制約検証(バリデーション)のルールを満たしているかどうかを判定するためのAPIです。このメソッドはGoogle ChromeやOperaをはじめ、Firefox、Edge、Safariなど主要なモダンブラウザで広くサポートされており、JavaScriptから手軽にフォームの妥当性チェックを行うことができます。
checkValidity()を呼び出すと、要素が有効な場合はtrue、無効な場合はfalseが返されます。無効だった場合でも、form要素に対して呼び出したとき以外はエラーイベントが発生しないため、独自のバリデーションロジックを組み込みやすいのが特徴です。
実装サンプル:入力値をリアルタイムに検証する
以下のコード例では、数値入力フィールドに最小値(min=4)の制約を設定し、ユーザーが入力するたびにoninputイベント経由でcheckValidity()を実行して、入力値が有効かどうかを画面に表示します。
<!DOCTYPE html>
<html>
<body>
<style>
.valid { color: #0B7866; }
.invalid { color: #CC3366; }
</style>
<div id="result"></div>
<script>
function check(input) {
var out = document.getElementById('result');
if (input.validity) {
if (input.validity.valid === true) {
out.innerHTML = "<span class='valid'>" + input.id + " は有効です</span>";
} else {
out.innerHTML = "<span class='invalid'>" + input.id + " は無効です</span>";
}
}
console.log(input.checkValidity());
};
</script>
<form id="testform" onsubmit="return false;">
<label>最小値:
<input oninput="check(this)" id="min_input" type="number" min="4" />
</label><br>
</form>
</body>
</html>
コードのポイント解説
このサンプルの動作を理解するために、重要なポイントをいくつか解説します。
- validityプロパティ: 入力要素は
ValidityStateオブジェクトを持っており、validフラグのほか、rangeOverflow(最大値超過)やvalueMissing(必須未入力)など、詳細なエラー状態を確認できます。 - oninputイベント: ユーザーが入力するたびに検証処理が走るため、送信ボタンを押す前にリアルタイムでフィードバックを提供できます。
- type="number" と min属性: HTML5の新しい入力タイプと制約属性を組み合わせることで、JavaScript側で複雑な判定ロジックを書かずとも、ブラウザ標準の検証機能を活用できます。
- console.log()による確認:
checkValidity()の戻り値をコンソールに出力することで、開発者ツール上でも検証結果を簡単に確認できます。
対応ブラウザについて
checkValidity()メソッドは、Google Chrome、Opera、Firefox、Microsoft Edge、Safariなど、現在利用されている主要なブラウザすべてで動作します。そのため、古いIE向けの特別な配慮が必要ない現代のWebアプリケーションでは、安心して使用できる標準的な手法といえます。
まとめ
HTML5のcheckValidity()メソッドを使えば、フォーム送信前に入力値の妥当性をプログラムから柔軟に判定できます。validityオブジェクトと組み合わせれば、どの制約に違反しているのかも特定可能であり、ユーザーにとって分かりやすいリアルタイムバリデーションの実装に役立ちます。ぜひ実際のフォーム開発に取り入れてみてください。
-
【HTML DOM】Input RangeのstepUp()メソッドの使い方を解説
HTML DOMのInput Range(type=range)で利用できるstepUp()メソッドは、スライダーコントロールの現在値を指定した数だけ増加させるためのメソッドです。引数を省略した場合は1ずつ増加します。また、input要素にstep属性が指定されている場合は、そのstep値の倍数単位で値が増加します。たとえばstep=20が設定されている場合、stepUp(2)を実行すると20×2=40だけ値が増加します。 構文 RangeオブジェクトのstepUp()メソッドの構文は以下のとおりです。 rangeObject.stepUp(number) numberは、スライダーの値をどれ
-
HTML DOM 入力レンジ(Range)のstepDown()メソッド徹底解説
HTML DOM Input Range stepDown()メソッドとはHTML DOMのInput Range stepDown()メソッドは、スライダー(レンジ入力)コントロールの値を指定した数だけ減少させるために使用します。引数を省略した場合は1ずつ減少します。さらに、step属性が指定されている場合は、そのステップ値の倍数単位で値が減っていきます。例えば、step=20が設定されている状態でstepDown(2)を実行すると、20×2=40ずつ値が減少します。構文RangeオブジェクトのstepDown()メソッドの構文は以下の通りです。rangeObject.stepDown(nu