JavaScript で text
入力ボックスを required としてマークしようとしています。
フィールドが元々 required
:
ユーザーが送信しようとすると、検証エラーが発生します:
しかし、今度は Javascript を介して「実行時」に required
プロパティを設定したいと思います:
対応するスクリプトを使用します:
リーリー今すぐ送信しない限り、検証チェックやブロックは行われません。
設定 HTML5 でブール属性 を検証する 正しい方法は何ですか?
jsフィドルあなたが尋ねているこの属性の値は何ですか?
required
Boolean:
として記録される属性
4.10.7.3.4 必須
プロパティ
必須
プロパティはブール型プロパティです。指定する場合、この要素は必須です。
boolean プロパティの定義方法については、面倒なことがたくさんあります。 HTML5 仕様のコメント:
要素にブール属性が存在する場合は true 値を表し、この属性が存在しない場合は false 値を表します。これは、属性が存在する場合、その値は、属性の正規名と一致し、先頭または末尾にスペースがない空の文字列または ASCII 大文字と小文字を区別しない値である必要があります。
required
boolean 属性を 2 つの異なる方法で指定できることを意味します:
リーリー
required 属性がタグで定義されていることがわかります:
リーリー
の値は空の文字列 ではなく、属性の正規名でもありません: リーリー
これは解決策につながるかもしれません。
...ここで、required
は reflective 属性 (例:id
、name
、type
など)、それで: ### リーリーelement
は実際の
inputDOM 要素です。例:
リーリー(完全を期すためです。)
###返事:###
これは、このコードのrequired
は文字列ではなくproperty オブジェクト
であるためです。
property はNamedNodeMap
その値は Attrobject です。これらのいずれかの値を取得するには、そのvalue代码> プロパティを確認する必要があります。ただし、ブール型プロパティの場合、値は無関係です。プロパティはマップ内に存在するか (true)、存在しないか (false) のいずれかです。
したがって、
requiredが
と同等。完全に削除することでクリアできます:反映されていない場合は、属性を追加することで設定できます:
リーリー ...element.required = trueリーリー
と同等。...
element.required = falseただし、
required###短縮版### リーリー
ロングバージョン
T.J. Crowder が
反映されたプロパティをなんとか指摘できたので、私は次の構文 error: を学びました。 リーリー
は element.getAttribute と element.setAttribute を渡す必要があります:
リーリーリーリー
これは、属性に実際には特別なHtmlAttribute
オブジェクトが含まれているためです:属性値を「true」に設定すると、必要な HtmlAttribute オブジェクトではなく、誤って
Stringオブジェクトに設定することになります。 リーリー 概念的に、正しい考え方 (型言語で表現) は次のとおりです: リーリー その理由は次のとおりです:
getAttribute(name)
setAttribute(名前, 値)
リーリー
あなたがしたくないことは、.attributes コレクションを誤って使用することです:
リーリー ###テストケース###これにより、required 属性の使用に関するテストが行われ、その属性を介して返された値と反映された属性が比較されます
.attributesリーリー ###結果:### リーリー
コレクションに直接アクセスしようとするとエラーになります。 DOM プロパティを表すオブジェクトを返します:
リーリーこれは、
value.attributes
コレクションに直接アクセスしてはいけない理由を説明しています。プロパティのを操作しているのではなく、プロパティ自体を表すオブジェクトを操作しています。
必須フィールドを設定するにはどうすればよいですか?
プロパティに
requiredを設定する正しい方法は何ですか?プロパティを反映するか、プロパティを正しく設定するかの 2 つのオプションがあります。
trueリーリー
厳密に言えば、他の値はプロパティを「設定」します。ただし、Boolean プロパティの定義では、を示すには空の文字列
""にのみ設定できると記載されています。次のメソッドは、
required
Boolean
TryRemove
required属性を設定できます。
ただし、は使用しないでください:
リーリー プロパティを直接設定しようとするとエラーになることがわかりました: リーリー 必須フィールドを クリアするにはどうすればよいですか?属性を使用する際の注意点は、属性を誤って開いてしまう可能性があることです。 リーリー 無効なメソッド: リーリー
リフレクションの.required
プロパティを使用する場合、「falsey」値を使用してオフにし、true 値を使用してオンにすることもできます。ただし、明確にするために、善悪に固執してください。が
必須かどうかを確認するにはどうすればよいですか?
リーリー.hasAttribute("required")
メソッドを通じて属性が存在するかどうかを確認します:反映された
リーリー.required
プロパティを介して確認することもできます: