フォーム・コントロールに共通な属性
4.10.19 フォーム・コントロールに共通な属性
4.10.19.1 フォーム・コントロールの名前付け
name コンテンツ属性は、フォーム・コントロールの名前を与えます。これは、フォーム・サブミットや form 要素の elements オブジェクトで使われます。この属性が指定される場合、その値は空文字列であってはいけません。
name には、空でない値なら何でも許されます。しかし、"_charset_" と "isindex" という名前は特別に扱われます:
isindex-
この値を使うと、
application/x-www-form-urlencodedメカニズムを使ってサブミットされるフォームの中で最初のコントロールとなるText・コントロールの名前として使われるなら、このコントロールの値のみを入れてサブミットすることになります。名前は使われません。 _charset_-
この値は、
value属性を持たない Hidden コントロールの名前として使われるなら、サブミット中に、サブミットの文字エンコーディングから構成される値が自動的に与えられます。
4.10.19.2 フォーム・コントロールの有効化と無効化
disabled コンテンツ属性は、論理属性です。
フォーム・コントロールに disabled 属性がセットされている、または、そのフォーム・コントロールは disabled 属性がセットされた fieldset 要素の子孫で、その fieldset 要素の子となる最初の legend 要素の子孫でないなら、そのフォームコントロールは無効です。
無効となったフォームコントロールは、その要素上で、ユーザー・インタラクション・タスク・ソースでキューイングされる click イベントが送出されないようにしなければいけません。
制約バリデーション: 要素が無効なら、制約バリデーションから除外されます。
4.10.19.3 フォーム・コントロールの値
フォームコントロールは、値とチェック状態を持ちます。(後者は input 要素だけで使われます。)これらは、ユーザーがそのコントロールとどのように関わるのかを記述するために使われます。
input 要素の multiple 属性の制約バリデーションの挙動を定義するために、input 要素は別に定義された複数の値を持つことがあります。
4.10.19.4 フォーム・コントロールのオートフォーカス
autofocus コンテンツ属性を使うと、ユーザーは、ページがロードされたらできる限り早くそのコントロールにフォーカスするよう指示することができます。手動でメインのコントロールにフォーカスしなくても、ユーザーが入力を開始することができるようになります。
ドキュメント内に autofocus 属性を指定できる要素はひとつだけです。
autofocus 属性を持つ要素がドキュメントに挿入されたら、ユーザーエージェントは、次の手順を実行しなければいけません:
-
target を該当の要素の
Documentとします。 -
target がブラウジング・コンテキストを持たなければ、これらの手順を中止します。
-
target のブラウジング・コンテキストにトップレベル・ブラウジング・コンテキストがなければ(例えば、それが親ブラウジング・コンテキストを持たないネストされたブラウジング・コンテキストだった場合)、これらの手順を中止します。
-
target が生成されたときに、その target のブラウジング・コンテキストにサンドボックス化自動機能ブラウジング・コンテキスト・フラグがセットされているなら、これらの手順を中止します。
-
target のオリジンが、target のトップレベル・ブラウジング・コンテキストでその時点でフォーカスされた要素の
Documentのオリジンと同じなら、これらの手順を中止します。 -
target のオリジンが、target のトップレベル・ブラウジング・コンテキストのアクティブ・ドキュメントのオリジンと同じなら、これらの手順を中止します。
-
ユーザーエージェントがすでに、トップレベル・ブラウジング・コンテキストのアクティブ・ドキュメントが target のトップレベル・ブラウジング・コンテキストのアクティブ・ドキュメントと同じとなる
Documentに挿入される要素に応えて、この手順リストの最後に到達したなら、これらの手順を中止します。 -
ユーザーが、フォーカスを変更したくないことを示したなら(例えば、フォーム・コントロールに入力し始めるなど)、随意にこれらの手順を中止します。
-
要素がフォーカス可能かどうかをチェックするタスクをキューイングします。もしそうなら、その要素に対してフォーカス手順を実行します。ユーザーエージェントは、ドキュメントのスクロール位置を変更することもできます。または、その要素にユーザーの注意を引くための何かしらのアクションを実行することができます。このタスクのタスク・ソースは、DOM マニピュレーション・タスク・ソースです。
コントロールにフォーカスするといっても、フォーカスを失ったら、ユーザーエージェントはブラウザー・ウィンドウにフォーカスしなければならない、ということを意味しているわけではありません。
autofocus IDL 属性は、同じ名前のコンテンツ属性を反映しなければいけません。
次のコードでは、ドキュメントがロードされたとき、テキスト・コントロールにフォーカスが当たるでしょう。
<input maxlength="256" name="q" value="" autofocus> <input type="submit" value="Search">
4.10.19.5 ユーザー入力長の制限
フォーム・コントロール maxlength 属性、これは dirty value flag によって制御されるものですが、ユーザーが入力できる文字数の制限を宣言します。
要素にフォーム・コントロール maxlength 属性が指定されたら、その属性の値は、妥当な非負整数でなければいけません。この属性が指定され、その値に非負整数パース手順を適用して数字が得られたら、その数字が、その要素の最大許容データ長となります。この属性が省略されたり、値をパースしたらエラーになった場合は、最大許容データ長はないということになります。
制約バリデーション: 要素が最大許容データ長を持ち、その dirty value flag が true で、その値がユーザー編集(スクリプトによる変更ではありません)によって最後に変更され、その要素の値のコードポイント長がその要素の最大許容データ長より大きければ、その要素は、 データ長超過状態に陥っていることになります。
ユーザーエージェントは、ユーザーに対して、コードポイント長がその要素の最大許容データ長より大きい値を、その要素の値にセットできないようにすることができます。
4.10.19.6 フォーム・サブミット
フォーム・サブミット用の属性は、form 要素とサブミット・ボタン(フォームをサブミットするボタンを表す要素で、例えば、type 属性が Submit Button 状態にある input 要素など)のどちらにも指定することができます。
form 要素で指定できるフォーム・サブミット用の属性は、action, enctype, method, novalidate, target です。
サブミット・ボタンに指定できるフォーム・サブミット用の属性は、formaction, formenctype, formmethod, formnovalidate, formtarget です。省略されたら、それぞれに対応する form 要素の属性に指定された値がデフォルトとなります。
action と formaction コンテンツ属性が指定されたら、その値は潜在的にスペースで囲まれた空でない妥当なURL でなければいけません。
要素のアクションは、もし、その要素がサブミット・ボタンで formaction 属性を持つなら、その属性の値となり、フォーム・オーナーが action 属性を持つなら、その値となり、そして、いずれでもなければ、空文字列となります。
method と formmethod コンテンツ属性は、次のキーワードと状態を伴った列挙属性です:
- キーワード
GETは、状態 GET にマッピングされ、HTTP GET メソッドを表します。 - キーワード
POSTは、状態 POST にマッピングされ、HTTP POST メソッドを表します。
これらの属性の値を特定できない場合のデフォルトは、GET 状態です。
要素のメソッドとは、これらの状態のうちのひとつになります。要素がサブミット・ボタンで、formmethod 属性を持つなら、その要素のメソッドは、その属性の状態となります。なければ、それは、フォーム・オーナーの method 属性の状態となります。
enctype と formenctype コンテンツ属性は、次のキーワードと状態を伴った列挙属性です:
- "
application/x-www-form-urlencoded" キーワードと、それに対応する状態 - "
multipart/form-data"キーワードと、それに対応する状態 - "
text/plain"キーワードと、それに対応する状態
これらの属性の値を特定できない場合のデフォルトは、application/x-www-form-urlencoded 状態です。
要素の enctype は、これら3つの状態のいずれかです。要素がサブミット・ボタンで formenctype 属性を持つなら、その要素の enctype は、その属性の状態となります。なければ、それは、フォーム・オーナーの enctype 属性の状態となります。
target と formtarget コンテンツ属性が指定されたら、その値は、妥当なブラウジング・コンテキスト名またはキーワードでなければいけません。
要素の target は、その要素がサブミット・ボタンで formtarget 属性を持つなら、その属性の値となり、フォーム・オーナーが target 属性を持っていれば、その値となり、Document に target 属性を持った base 要素があれば、そのうち最初の base 要素の target 属性の値となり、そのような要素がなければ、空文字列となります。
novalidate と formnovalidate コンテンツ属性は、 論理属性です。もしこの属性が存在すれば、そのフォームはサブミット中にバリデートされないことを表します。
要素の非バリデート状態は、その要素がサブミット・ボタンで formnovalidate 属性が存在する、または、その要素のフォーム・オーナーに novalidate 属性が存在したら、true となります。そうでなければ、false となります。
この属性は、バリデーション制約を持つフォーム上に "保存" ボタンを入れるのに役立ちます。ユーザーは、そのフォームのすべてに入力し終わっていなくても、その途中段階の状態を保存しておくことができます。次の例は、二つの必須フィールドがある簡単なフォームを示しています。ボタンが三つあります。一つはフォームをサブミットするボタンで、両方のフィールドの入力を必須にします。もう一つはフォームを保存するボタンです。これは、ユーザーが後に戻ってきても入力した状態が再現できるようにします。最後はフォームをまとめてキャンセルするボタンです。
<form action="editor.cgi" method="post"> <p><label>Name: <input required name=fn></label></p> <p><label>Essay: <textarea required name=essay></textarea></label></p> <p><input type=submit name=submit value="Submit essay"></p> <p><input type=submit formnovalidate name=save value="Save essay"></p> <p><input type=submit formnovalidate name=cancel value="Cancel"></p> </form>
action IDL 属性は、同じ名前のコンテンツ属性を反映しなければいけません。ただし、取得時において、このコンテンツ属性がない、または、その値が空文字列だった場合は除きます。その場合は、ドキュメントのアドレスが代わりに返されなければいけません。target IDL 属性は、同じ名前のコンテンツ属性を反映しなければいけません。method と enctype IDL 属性は、同じ名前のコンテンツ属性を反映しなければいけません。ただし、既知の値のみに限られます。encoding IDL 属性は、enctype コンテンツ属性を反映しなければいけません。ただし、既知の値のみに限られます。noValidate IDL
属性は、novalidate コンテンツ属性を反映しなければいけません。formAction IDL
属性は、formaction コンテンツ属性を反映しなければいけません。ただし、取得時において、このコンテンツ属性がない、または、その値が空文字列だった場合は除きます。その場合は、ドキュメントのアドレスが代わりに返されなければいけません。formEnctype IDL
属性は、formenctype コンテンツ属性を反映しなければいけません。ただし、既知の値のみに限られます。formMethod IDL
属性は、formmethod コンテンツ属性を反映しなければいけません。ただし、既知の値のみに限られます。formNoValidate IDL
属性は、formnovalidate コンテンツ属性を反映しなければいけません。formTarget IDL
属性は、formtarget コンテンツ属性を反映しなければいけません。
4.10.19.7 要素の方向性のサブミット
フォーム・コントロール要素のフォーム・コントロール dirname 属性によって、その要素の方向性のサブミットし、 フォーム・サブミット中にこの値を含むフィールドの名前を与えることができます。この属性が指定されたら、その値は空文字列であってはいけません。