このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

HTMLInputElement: reportValidity() メソッド

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨2018年12月⁩.

reportValidity()HTMLInputElement インターフェイスのメソッドで、 checkValidity() メソッドと同じ検証のチェック手順を実行します。値が無効であった場合、このメソッドはその要素に invalid イベントを発行し、(そのイベントがキャンセルされなければ)ユーザーに問題を報告します。

構文

js
reportValidity() 

引数

なし。

返値

要素を検証して問題がなければ true を返し、それ以外の場合は false を返します。

基本的な使用

HTML

必須の数値フィールドと、フォームのチェックボタンと送信ボタンの 2 つのボタンを設置したフォームを設置します。

html
<form action="#" method="post"> <p> <label for="age">年齢 (21 ~ 65) </label> <input type="number" name="age" required id="age" min="21" max="65" /> </p> <p> <button type="submit">送信</button> <button type="button" id="report">reportValidity()</button> </p> <p id="log"></p> </form> 

JavaScript

"reportValidity()" ボタンが押された場合、reportValidity() メソッドを使用して、入力値が制約を満たしているかどうかを確認します。返値をログに記録します。false の場合、検証メッセージも表示し、invalid イベントを捕捉します。

js
const output = document.querySelector("#log"); const reportButton = document.querySelector("#report"); const ageInput = document.querySelector("#age"); ageInput.addEventListener("invalid", () => { console.log("invalid イベントが発行されました。"); }); reportButton.addEventListener("click", () => { const reportVal = ageInput.reportValidity(); output.innerHTML = `"reportValidity()" の返値: ${reportVal}`; if (!reportVal) { output.innerHTML += `<br />検証メッセージ: "${ageInput.validationMessage}"`; } }); 

結果

false の場合、値が未入力、21 未満、65 超、または無効な場合、invalid イベントがコンソールに記録されます。

独自のエラーメッセージ

この例は、独自のエラーメッセージが、値が有効であるにもかかわらず、false の返値を引き起こす可能性があることを示しています。

HTML

前の例の HTML に[問題を修正]ボタンを追加します。

html
<button type="button" id="fix">問題を修正</button> 

JavaScript

上記の基本例の JavaScript を拡張し、HTMLInputElement.setCustomValidity() メソッドを使用して独自のエラーメッセージを提供する関数を追加します。 validateAge() 関数は、入力が有効であり、enableValidation 変数が true の場合にのみエラーメッセージを空文字列に設定します。ただし、enableValidation は[問題を修正]ボタンが押されるまでは false になります。

js
const output = document.querySelector("#log"); const reportButton = document.querySelector("#report"); const ageInput = document.querySelector("#age"); const fixButton = document.querySelector("#fix"); let enableValidation = false; fixButton.addEventListener("click", (e) => { enableValidation = true; fixButton.innerHTML = "エラーを修正しました"; fixButton.disabled = true; }); reportButton.addEventListener("click", () => { validateAge(); const reportVal = ageInput.reportValidity(); output.innerHTML = `"reportValidity()" の返値: ${reportVal}`; if (!reportVal) { output.innerHTML += `<br />検証メッセージ: "${ageInput.validationMessage}"`; } }); const validateAge = () => { const validityState_object = ageInput.validity; if (validityState_object.valueMissing) { ageInput.setCustomValidity("年齢を入力してください(必須)"); } else if (ageInput.rangeUnderflow) { ageInput.setCustomValidity("値が小さすぎます"); } else if (ageInput.rangeOverflow) { ageInput.setCustomValidity("値が大きすぎます"); } else if (enableValidation) { // 有効でかつ enableValidation が true に設定されている場合は true ageInput.setCustomValidity(""); } }; 

結果

年齢を入力する前に[reportValidity()]ボタンを起動すると、required の制約検証を満たさないため、reportValidity() メソッドは false を返します。このメソッドは入力に対して invalid イベントを発生させ、ユーザーに問題を報告し、独自のエラーメッセージ「年齢を入力してください(必須)」を表示します。独自のエラーメッセージが設定されている限り、[reportValidity()]ボタンを起動すると、有効な年齢を選択してもエラーが表示され続けます。検証を有効にするには、独自のエラーメッセージを空文字列に設定する必要があります。これは、[問題を修正]ボタンをクリックすることで行います。

仕様書

Specification
HTML
# dom-cva-reportvalidity-dev

ブラウザーの互換性

関連情報