コアポイント
.willValidate
、.checkValidity()
、.validity
、.setCustomValidity()
などのいくつかのメソッドとプロパティを提供します。これらは、フィールドが検証されるかどうか、フィールドが検証され、フィールドの有効性、カスタム有効性メッセージが設定されるかどうかを確認するために使用されます。ただし、すべての属性がすべてのブラウザによってサポートされているわけではありません。 すべてのブラウザは、すべてのHTML5入力タイプとCSSセレクターをサポートしていません
:invalid
一部のJavaScriptコードと制約検証APIは、ユーザーエクスペリエンスを向上させることができます。さまざまなブラウザや入力タイプをサポートしたい場合、これは少し乱雑になる可能性があることに注意してください。 :required
もちろん、これはコードのフィールドエラーを確認する必要があることを意味しますが、すぐにネイティブブラウザの検証を使用することが可能であることがわかります。 noValidate
true
var form = document.getElementById("myform"); form.noValidate = true; // 设置处理程序以在提交时验证表单 // onsubmit 用于更轻松的跨浏览器兼容性 form.onsubmit = validateForm;
各入力フィールドには.willValidate
属性があります。これは返されます:
true
:ブラウザがネイティブ検証フィールドを配置する場合
false
undefined
ループイテレーションは、単一のfalse
コレクションのすべてのフィールドを表し、ボタンやフィールドセットなどの他のタイプではなく入力であることをチェックします。次の行は非常に重要です... validateForm
var form = document.getElementById("myform"); form.noValidate = true; // 设置处理程序以在提交时验证表单 // onsubmit 用于更轻松的跨浏览器兼容性 form.onsubmit = validateForm;
およびelements
はどちらも誤った値なので、
function validateForm(event) { // 获取跨浏览器事件对象和表单节点 event = (event ? event : window.event); var form = (event.target ? event.target : event.srcElement), f, field, formvalid = true; // 循环所有字段 for (f = 0; f < form.elements.length; f++) { // 获取字段 field = form.elements[f]; // 忽略按钮、字段集等 if (field.nodeName !== "INPUT" && field.nodeName !== "TEXTAREA" && field.nodeName !== "SELECT") continue; // 原生浏览器验证可用吗? if (typeof field.willValidate !== "undefined") { // 原生验证可用 } else { // 原生验证不可用 } } }
false
ブラウザは入力タイプをサポートしていますか? undefined
field.willValidate
Firefox 29またはIE11でのネイティブサポートはありません。これらのブラウザは(効果的に)レンダリングされます:
ただし、両方のブラウザはテキストタイプの検証をサポートしているため、
は// 原生浏览器验证可用吗? if (typeof field.willValidate !== "undefined") { // 原生验证可用 } else { // 原生验证不可用 }
<input type="date" name="dob" />
method field.willValidate
undefined
type
ネイティブ検証が利用可能な場合は、.type
メソッドを実行してフィールドを確認できます。問題がない場合、メソッドは
<input type="text" name="dob" />
エラーをより詳細にチェックできるように、フィールドの.checkValidity()
オブジェクトを設定します
検証が失敗すると、
イベントはないことに注意してください。必要に応じてエラースタイルとメッセージをリセットすることを忘れないでください。 .checkValidity()
true
false
.reportValidity()
field
.validity
オブジェクトには、次のプロパティがあります。.valid
- フィールドにエラーがない場合はtrue
を返し、それ以外の場合はfalse
を返します。
.valueMissing
- フィールドが必要であるが値が入力されていない場合はtrue
を返します。
.typeMismatch
- 値が正しい構文でない場合(たとえば、奇形の電子メールアドレス)を返します。
true
- 値が.patternMismatch
属性の正規表現と一致しない場合はpattern
を返します。
true
- 値が許可されているよりも長い場合は.tooLong
を返します。
maxlength
- 値が許可されているtrue
よりも短い場合は.tooShort
を返します。
minlength
- 値がtrue
よりも低い場合は、.rangeUnderflow
を返します。
min
- 値がtrue
よりも高い場合は、.rangeOverflow
を返します。
max
- 値が一致しない場合はtrue
、.stepMismatch
を返します。
step
- エントリを値に変換できない場合、true
に戻ります。
.badInput
- フィールドでカスタムエラーが設定されている場合、true
を返します。 .customError
true
すべてのプロパティがすべてのブラウザでサポートされているわけではないため、あまりにも多くの仮定をしないように注意してください。ほとんどの場合、エラーメッセージを表示または非表示にするには、
の結果である必要があります。 .valid
.checkValidity()
以上がHTML5フォーム:JavaScriptおよび制約検証APIの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。