diff --git a/files/ja/web/api/htmlbuttonelement/reportvalidity/index.md b/files/ja/web/api/htmlbuttonelement/reportvalidity/index.md new file mode 100644 index 00000000000000..27b2122893815d --- /dev/null +++ b/files/ja/web/api/htmlbuttonelement/reportvalidity/index.md @@ -0,0 +1,140 @@ +--- +title: "HTMLButtonElement: reportValidity() メソッド" +short-title: reportValidity() +slug: Web/API/HTMLButtonElement/reportValidity +l10n: + sourceCommit: 8ec1d24d4f935e73f39df9a7d69e58c098ebb003 +--- + +{{APIRef("HTML DOM")}} + +**`reportValidity()`** は {{domxref("HTMLButtonElement")}} インターフェイスのメソッドで、 {{domxref("HTMLButtonElement.checkValidity", "checkValidity()")}} メソッドと同じ検証のチェック手順を実行します。値が無効であった場合、このメソッドはその要素に {{domxref("HTMLInputElement/invalid_event", "invalid")}} イベントを発行し、(そのイベントがキャンセルされなければ)ユーザーに問題を報告します。 + +## 構文 + +```js-nolint +reportValidity() +``` + +### 引数 + +なし。 + +### 返値 + +要素を検証して問題がなければ `true` を返し、それ以外の場合は `false` を返します。 + +### 例 + +この突飛な例は、ボタンを不正なものにする方法を示しています。 + +#### HTML + +いくつかのボタンだけを設置したフォームを作成します。 + +```html +
+

+ + +

+

+ +

+
+ +

+``` + +#### CSS + +CSS を少し追加し、ボタンに `:valid` および `:invalid` スタイルを設定します。 + +```css +input[type="submit"], +button { + background-color: #33a; + border: none; + font-size: 1.3rem; + padding: 5px 10px; + color: white; +} +button:invalid { + background-color: #a33; +} +button:valid { + background-color: #3a3; +} +``` + +#### JavaScript + +この例のボタンに値、内容、検証メッセージの切り替え機能を設置します。 + +```js +const reportButton = document.querySelector("#report"); +const exampleButton = document.querySelector("#example"); +const output = document.querySelector("#log"); + +reportButton.addEventListener("click", () => { + const reportVal = exampleButton.reportValidity(); + output.innerHTML = `reportValidity の返値: ${reportVal}
独自のエラー: ${exampleButton.validationMessage}`; +}); + +exampleButton.addEventListener("invalid", () => { + console.log("exampleButton で invalid イベントが発行されました。"); +}); + +exampleButton.addEventListener("click", (e) => { + e.preventDefault(); + if (exampleButton.value == "error") { + breakOrFixButton("fixed"); + } else { + breakOrFixButton("error"); + } + output.innerHTML = `検証メッセージ: ${exampleButton.validationMessage}
独自のエラー: ${exampleButton.validationMessage}`; +}); + +const breakOrFixButton = () => { + const state = toggleButton(); + if (state == "error") { + exampleButton.setCustomValidity("これは独自のエラーメッセージです。"); + } else { + exampleButton.setCustomValidity(""); + } +}; + +const toggleButton = () => { + if (exampleButton.value == "error") { + exampleButton.value = "fixed"; + exampleButton.innerHTML = "エラーなし"; + } else { + exampleButton.value = "error"; + exampleButton.innerHTML = "独自のエラー"; + } + return exampleButton.value; +}; +``` + +#### 結果 + +{{EmbedLiveSample("Custom error message", "100%", 220)}} + +ボタンは既定で有効です。[このボタン]を有効にすると、値やコンテンツを変更したり、独自のエラーメッセージを追加したりすることができます。[reportValidity()] ボタンを有効にすると、ボタンの有効性が確認され、独自のエラーメッセージがユーザーに報告され、メッセージによりボタンが制約検証を通らない場合は `invalid` イベントが発生します。 + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- {{domxref("HTMLButtonElement.checkValidity()")}} +- {{HTMLElement("button")}} +- {{HTMLElement("form")}} +- [学習: クライアント側フォーム検証](/ja/docs/Learn/Forms/Form_validation) +- [ガイド: 制約検証](/ja/docs/Web/HTML/Constraint_validation) +- CSS の {{cssxref(":valid")}} および {{cssxref(":invalid")}} 擬似クラス