Edition for Web Developers — Last Updated 17 December 2024
多くのフォームコントロールは、値とcheckednessを持つ。(後者は、input
要素によってのみ使用される。)これらは、ユーザーがコントロールと対話する方法を記述するために使用される。
コントロールの値はそのコントロールの初期状態である。それ自体は、ユーザーの現在の入力と一致しないかもしれない。
たとえば、ユーザーが数字を期待する数値フィールドに単語"three"を入力する場合、ユーザーの入力は文字列"three"であるがコントロールの値は変わらないままとなる。また、ユーザーがeメールフィールドに(先頭の空白文字とともに)電子メールアドレス" awesome@example.com"を入力する場合、ユーザーの入力は文字列" awesome@example.com"であるが、eメールフィールドに対するブラウザーのUIは(先頭の空白文字なしで)"awesome@example.com
"の値に直すかもしれない。
input
およびtextarea
要素は、ダーティ値フラグを持つ。これは、値とデフォルト値の間の相互作用を追跡するために使用される。falseである場合、valueはデフォルト値を反映する。trueである場合、デフォルト値は無視される。
input
、textarea
およびselect
要素は、ユーザー妥当性真偽値を持つ。It is initially set to false.
input
要素のmultiple
属性に直面する制約バリデーションの動作を定義するために、input
要素はまた、別々に定義された複数の値を持つことができる。
maxlength
属性とminlength
属性の動作、およびtextarea
要素に固有の他のAPIの動作を定義するために、値をもつすべてのフォームコントロールにもAPI値を取得するためのアルゴリズムがある。デフォルトでは、このアルゴリズムは単にコントロールの値を返すだけである。
select
要素は値を持たない。そのoption
要素のselectednessが代わりに使用されるものである。
フォームコントロールはmutableとして指定することができる。
これは、ユーザーがフォームコントロールの値またはcheckednessを変更できるかどうか、またはコントロールを自動的に事前入力できるかどうかを(要素が指定されようとなかろうと依存する本仕様での定義及び要件によって)判定する。
フォームに関連付けられた要素は、要素のフォーム所有者と呼ばれるform
要素との関係を持つことができる。フォームに関連付けられた要素がform
要素に関連付けられない場合、そのフォーム所有者はnullであるといわれる。
フォームに関連付けられた要素は、関連するパーサー挿入フラグを持つ。
Support in all current engines.
Support in all current engines.
デフォルトで、フォームに関連付けられた要素がその祖先form
要素に関連付けられるが、記載である場合、これを上書きするためにform
属性を指定されてもよい。
この機能は、著者がネストされたform
要素に対するサポートの不足を回避することができる。
記載されたフォームに関連付けられた要素が指定されたform
属性を持つ場合、その属性の値は、その要素のツリーでform
要素のIDでなければならない。
element.form
要素のフォーム所有者を返す。
存在しない場合nullを返す。
name
属性Support in all current engines.
name
コンテンツ属性は、フォームの送信やform
要素のelements
オブジェクトで使用されるような、フォームコントロールの名前を与える。属性が指定される場合、その値は空の文字列またはでisindex
あってはならない。
多くのユーザーエージェントは歴史的に、名前isindex
をもつフォームの最初のテキストコントロールを特別にサポートしており、この仕様は以前に関連するユーザーエージェント要件が定義されていた。しかし、一部のユーザーエージェントは、その後、その特別なサポートを削除し、関連する要件はこの仕様から削除された。よって、レガシーユーザーエージェントで問題のある再解釈を避けるために、isindex
という名前はもはや許可されない。
isindex
以外で、name
に対して任意の空でない値が許可される。ASCII大文字・小文字不区別で一致する名前_charset_
は特別である:value
属性のない コントロールの名前として使用される場合、送信の間value
属性は送信文字エンコーディングから成る送信の間の値を自動的に与えられる。
DOMの上書きは、よくあるセキュリティの問題の原因である。name
コンテンツ属性で組み込みフォームプロパティの名前を使用することを避ける。
この例において、input
要素は組み込みmethod
のプロパティを上書きする:
let form = document. createElement( "form" );
let input = document. createElement( "input" );
form. appendChild( input);
form. method; // => "get"
input. name = "method" ; // DOM clobbering occurs here
form. method === input; // => true
入力名は組み込みのフォームプロパティよりも優先されるため、JavaScript参照form.method
は組み込みのmethod
プロパティの代わりに"method"という名前のinput
要素を指す。
dirname
属性Support in all current engines.
dirname
属性は要素の方向の送信を有効にし、フォーム送信の間にこの値を含むコントロール名を与える。そのような属性が指定される場合、その値は空文字列であってはならない。
この例において、フォームはテキストコントロールと送信ボタンを含む:
< form action = "addcomment.cgi" method = post >
< p >< label > Comment: < input type = text name = "comment" dirname = "comment.dir" required ></ label ></ p >
< p >< button name = "mode" type = submit value = "add" > Post Comment</ button ></ p >
</ form >
ユーザーがフォームを送信するとき、ユーザーエージェントは、"comment"、"comment.dir"、"mode"と呼ばれる3つのフィールドを含む。よって、ユーザーが"Hello"を打ち込んだ場合、送信ボディはこのようになるかもしれない:
comment=Hello&comment.dir=ltr&mode=add
ユーザーが手動で右から左へ記述方向に切り替え、"مرحبًا"を入力した場合、送信本体はこのようになるかもしれない:
comment=%D9%85%D8%B1%D8%AD%D8%A8%D8%A7&comment.dir=rtl&mode=add
maxlength
属性ダーティ値フラグによって制御される、フォームコントロールmaxlength
属性は、ユーザーが入力できる文字数の制限を宣言する。文字数は、長さを使って測定され、そして、textarea
要素の場合は、すべての改行が1文字に正規化される(CRLFの対とは対照的に)。
要素がフォームコントロールmaxlength
属性を指定される場合、属性値は妥当な非負の整数でなければならない。属性が指定され、数をもたらすその値に非負整数を解析するための規則を適用する場合、その数は要素の最大許容値の長さである。属性を省略する、またはその値を解析しエラーとなる場合、最大許容値の長さは存在しない。
minlength
属性ダーティ値フラグによって制御されるフォームコントロールminlength
属性は、ユーザーが入力できる文字数の下限を宣言する。"文字数"は、長さを使って測定され、そして、textarea
要素の場合は、すべての改行が1文字に正規化される(CRLFの対とは対照的に)。
minlength
属性はrequired
属性を暗示しない。フォームコントロールがminlength
属性を一切持たない場合、値は依然として省略できる。minlength
属性は、ユーザーがすべて値を入力した後にのみ蹴る。空文字列が許可されない場合、required
属性も設定する必要がある。
要素がフォームコントロールminlength
属性を指定される場合、属性値は妥当な非負の整数でなければならない。属性が指定され、数をもたらすその値に非負整数を解析するための規則を適用する場合、その数は要素の最小許容値の長さである。属性を省略する、またはその値を解析しエラーとなる場合、最小許容値の長さは存在しない。
要素が最大許容値の長さと最小許容値の長さの両方を持つ場合、最小許容値の長さは最大許容値の長さ以下でなければならない。
この例において、4つのテキストコントロールが存在する。1つめは必須であり、少なくとも5文字である必要がある。他の3つは任意だが、ユーザーは1つを記入する場合、ユーザーは少なくとも10文字を入力する必要がある。
< form action = "/events/menu.cgi" method = "post" >
< p >< label > Name of Event: < input required minlength = 5 maxlength = 50 name = event ></ label ></ p >
< p >< label > Describe what you would like for breakfast, if anything:
< textarea name = "breakfast" minlength = "10" ></ textarea ></ label ></ p >
< p >< label > Describe what you would like for lunch, if anything:
< textarea name = "lunch" minlength = "10" ></ textarea ></ label ></ p >
< p >< label > Describe what you would like for dinner, if anything:
< textarea name = "dinner" minlength = "10" ></ textarea ></ label ></ p >
< p >< input type = submit value = "Submit Request" ></ p >
</ form >
disabled
属性Support in all current engines.
Support in all current engines.
Support in all current engines.
Support in all current engines.
Support in all current engines.
disabled
コンテンツ属性は、真偽属性である。
option
要素に対するdisabled
属性およびoptgroup
要素に対するdisabled
属性は、別々に定義されている。
次のいずれかに該当する場合、フォームコントロールは無効になる:
要素がbutton
、input
、select
、textarea
またはフォームに関連付けられたカスタム要素であり、かつ(その値に関わらず)この要素にdisabled
属性が指定される。
要素がdisabled
属性が指定されるfieldset
要素の子孫であり、かつもしあればそのfieldset
要素の所有する最初のlegend
要素の子に属する子孫でない。
Element/form#Attributes_for_form_submission
Support in all current engines.
フォーム送信のための属性は、form
要素上と送信ボタン上(フォーム送信ボタンを表す要素、たとえば、type
属性のinput
要素がSubmit Button状態にある)の両方を指定できる。
form
要素で指定されてもよいフォーム送信のための属性は、action
、enctype
、method
、novalidate
、target
である。
送信ボタンで指定されてもよい対応するフォーム送信のための属性は、formaction
、formenctype
、formmethod
、formnovalidate
、formtarget
である。省略した場合、これらはform
要素の対応する属性で指定された値をデフォルトとする。
Support in all current engines.
指定される場合、action
およびformaction
コンテンツ属性は、潜在的にスペースで囲まれた妥当な空でないURLである値を持たなければならない。
要素が送信ボタンでありかつそのような属性を持つ場合、要素のactionはその要素のformaction
属性値である。すなわちactionがそのような属性を持つ場合、そのフォーム所有者のaction
属性値であり、そうでなければ空文字列である。
Support in all current engines.
method
およびformmethod
コンテンツ属性以下のキーワードおよび状態をもつ列挙属性である:
キーワード | 状態 | 概要 |
---|---|---|
get | GET | form がHTTP GETメソッドを使用することを示す。 |
post | POST | form がHTTP POSTメソッドを使用することを示す。 |
dialog | Dialog | form は、もしあれば、フォーム自身が存在する dialog ボックスを閉じ、そうでなければは送信しないことを示す。 |
method
属性の欠損値のデフォルトと不正値のデフォルトの両方は、GET状態である。
formmethod
属性の欠損値のデフォルトと不正値のデフォルトは両方ともGET状態である。
要素のメソッドはこれらの状態のいずれかである。要素が送信ボタンでありかつformmethod
属性を持つ場合、要素のメソッドはその属性の状態である。そうでなければ、フォーム所有者のmethod
属性状態である。
ここで検索クエリーがURLに提出されるように、method
属性は明示的にデフォルト値"get
"を指定するために使用される:
< form method = "get" action = "/search.cgi" >
< p >< label > Search terms: < input type = search name = q ></ label ></ p >
< p >< input type = submit ></ p >
</ form >
一方で、ユーザーのメッセージがHTTPリクエストのボディに送信されるように、ここでmethod
属性は、値"post
"を指定するために使用される:
< form method = "post" action = "/post-message.cgi" >
< p >< label > Message: < input type = text name = m ></ label ></ p >
< p >< input type = submit value = "Submit message" ></ p >
</ form >
この例において、form
はdialog
とともに使用される。フォームの送信時に、method
属性の"dialog
"キーワードは、自動的に閉じるダイアログを持つために使用される。
< dialog id = "ship" >
< form method = dialog >
< p > A ship has arrived in the harbour.</ p >
< button type = submit value = "board" > Board the ship</ button >
< button type = submit value = "call" > Call to the captain</ button >
</ form >
</ dialog >
< script >
var ship = document. getElementById( 'ship' );
ship. showModal();
ship. onclose = function ( event) {
if ( ship. returnValue == 'board' ) {
// ...
} else {
// ...
}
};
</ script >
Support in all current engines.
enctype
およびformenctype
コンテンツ属性は、次のキーワードおよび状態をもつ列挙属性である:
application/x-www-form-urlencoded
"キーワードおよび対応する状態。multipart/form-data
"キーワードおよび対応する状態。text/plain
"キーワードおよび対応する状態。属性の欠損値のデフォルトと不正値のデフォルト</46>は、どちらもapplication/x-www-form-urlencoded
状態である。
formenctype
属性の欠損値のデフォルトと、その不正値のデフォルトは、application/x-www-form-urlencoded
状態である。
要素のenctypeはこれらの状態のいずれかである。要素が送信ボタンでありかつformenctype
属性を持つ場合、要素のenctypeはその属性の状態である。そうでなければ、フォーム所有者のenctype
属性状態である。
Support in all current engines.
指定される場合、target
およびformtarget
コンテンツ属性は、妥当なナビゲート可能名またはキーワードである値を持たなければならない。
Support in all current engines.
novalidate
およびformnovalidate
属性は真偽属性である。存在する場合、フォームが送信時に検証されないことを示す。
要素が送信ボタンでありかつ要素のformnovalidate
属性が存在する場合、または要素のフォーム所有者のnovalidate
属性が存在する場合、要素のno-validate stateはtrueである。そうでなければfalseである。
属性がフォームでデータを完全に入力していないにもかかわらず、ユーザーが自分の進捗状況を保存できるように、この属性は検証の制約を持つフォーム上のボタン"保存"を含めると便利である。次の例は、2つの必須フィールドを持つ単純なフォームを示す。3つのボタンがある。1つは、両方のフィールドに値が入力されている必要があるフォームを提出するためのもの、1つはユーザーが戻ってきて、後で埋めることができるようにフォームを保存するためのもの、1つは完全にフォームをキャンセルするためのものである。
< 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 >
autocomplete
属性Support in all current engines.
ユーザーエージェントは、たとえば以前のユーザー入力に基づくユーザーのアドレスを事前に入力するなど、ユーザーにフォームの記入を助けるための機能を持つこともある。autocomplete
コンテンツ属性は、ユーザーエージェントへのヒントの手段に、または実際にそのような機能を提供するかどうかに使用できる。
この属性が使用される2つの状態が存在する。オートフィル予想マントの着用時、autocomplete
属性は、入力がユーザーから予想されるものについて説明する。オートフィルアンカーマントの着用時、autocomplete
属性は、指定された値の意味を説明する。
type
属性が 状態にあるinput
要素では、autocomplete
属性は、オートフィルアンカーマントを着用する。他のすべての場合で、オートフィル予想マントを着用する。
オートフィル予想マントを着用時、autocomplete
属性が指定される場合、文字列"off
"と一致するASCII大文字・小文字不区別である単一のトークン、または文字列"on
"と一致するASCII大文字・小文字不区別である単一のトークン、またはオートフィル詳細トークンのいずれかから成る順序付きのスペースで区切りトークンの集合である値を持たなければならない。
オートフィルアンカーマントを着用時、autocomplete
属性が指定される場合、ちょうどオートフィル詳細トークンから成る順序付きのスペースで区切りトークンの集合の値を持たなければならない(すなわち、"on
"と"off
"キーワードが許可されない)。
オートフィルの詳細トークンは下記の順序で、次のとおり:
任意で、フィールドが名前グループに属することを意味する、最初の8文字が文字列"section-
"とASCII大文字・小文字不区別で一致するトークン。
たとえば、フォームで2つの配送先住所がある場合、次のようにマークアップできる:
< fieldset >
< legend > Ship the blue gift to...</ legend >
< p > < label > Address: < textarea name = ba autocomplete = "section-blue shipping street-address" ></ textarea > </ label >
< p > < label > City: < input name = bc autocomplete = "section-blue shipping address-level2" > </ label >
< p > < label > Postal Code: < input name = bp autocomplete = "section-blue shipping postal-code" > </ label >
</ fieldset >
< fieldset >
< legend > Ship the red gift to...</ legend >
< p > < label > Address: < textarea name = ra autocomplete = "section-red shipping street-address" ></ textarea > </ label >
< p > < label > City: < input name = rc autocomplete = "section-red shipping address-level2" > </ label >
< p > < label > Postal Code: < input name = rp autocomplete = "section-red shipping postal-code" > </ label >
</ fieldset >
任意で、以下の文字列のいずれかとASCII大文字・小文字不区別で一致するトークン:
shipping
"billing
"次の2つのオプションについていずれか:
コントロールには不適当であるものを除いて、以下のオートフィルフィールド名のいずれかとASCII大文字・小文字不区別で一致するトークン:
name
"honorific-prefix
"given-name
"additional-name
"family-name
"honorific-suffix
"nickname
"username
"new-password
"current-password
"one-time-code
"organization-title
"organization
"street-address
"address-line1
"address-line2
"address-line3
"address-level4
"address-level3
"address-level2
"address-level1
"country
"country-name
"postal-code
"cc-name
"cc-given-name
"cc-additional-name
"cc-family-name
"cc-number
"cc-exp
"cc-exp-month
"cc-exp-year
"cc-csc
"cc-type
"transaction-currency
"transaction-amount
"language
"bday
"bday-day
"bday-month
"bday-year
"sex
"url
"photo
"(これらの値の説明については、以下の表を参照のこと。)
以下の与えられた順序で:
任意で、以下の文字列のいずれかとASCII大文字・小文字不区別で一致するトークン:
home
"work
"mobile
"fax
"pager
"コントロールには不適当であるものを除いて、以下のオートフィルフィールド名のいずれかとASCII大文字・小文字不区別で一致するトークン:
tel
"tel-country-code
"tel-national
"tel-area-code
"tel-local
"tel-local-prefix
"tel-local-suffix
"tel-extension
"email
"impp
"(これらの値の説明については、以下の表を参照のこと。)
オプションで、文字列"webauthn
"とASCII大文字小文字不区別で一致するトークン。これは、ユーザーエージェントは、ユーザーがフォームコントロールを操作するときに、conditional
メディエーションを介して利用可能な公開鍵クレデンシャルを表示すべきであることを意味する。 webauthn
は、input
要素とtextarea
要素に対してのみ有効である。
先に述べたように、属性およびそのキーワードの意味は属性が着用するマントに依存する。
"off
"キーワードは、コントロールの入力データが特にセンシティブ(たとえば、核兵器のアクティベーションコード)である、またはキーワードが再利用されることのない値(たとえば、銀行のログインのためのワンタイムキー)であり、したがってユーザーは、値を事前入力するためにユーザーエージェントを当てにできる代わりに、明示的にデータを毎回入力する必要がある、または文書は独自のオートコンプリートのメカニズムを提供し、ユーザーエージェントに自動補完値を提供したくないことのいずれかを示す。
"on
"キーワードは、ユーザーエージェントが、オートコンプリート値をユーザーに提供することを許可するが、ユーザーが入力すると予想されるだろうデータの種類についてのさらなる情報を提供しないことを示す。ユーザーエージェントは、自動補完が提案する値を決定するためにヒューリスティックを使用する必要があるだろう。
上記のオートフィルフィールドは、ユーザーエージェントがオートコンプリート値をユーザーに提供することができ、かつどの値の種類が期待されるかを指定することを示す。そのような各キーワードの意味は、以下の表に記載される。
autocomplete
属性が省略される場合、要素のフォーム所有者のautocomplete
属性に関する状態に対応するデフォルト値が("on
"または"off
"のいずれか)の代わりに使用される。フォーム所有者が存在しない場合、値"on
"が使用される。
上記のオートフィルフィールドは、指定される値の特定の種類の値が、この要素のために提供される値であることを示す。そのような各キーワードの意味は、以下の表に記載される。
この例において、ページは明示的にトランザクションの通貨と金額を指定している。フォームは、クレジットカードや他の請求の詳細を要求する。ユーザーエージェントは、十分なバランスを有し、関連する通貨をサポートしていることを知るクレジットカードを提示するためにこの情報を使用することができる。
< form method = post action = "step2.cgi" >
< input type = hidden autocomplete = transaction-currency value = "CHF" >
< input type = hidden autocomplete = transaction-amount value = "15.00" >
< p >< label > Credit card number: < input type = text inputmode = numeric autocomplete = cc-number ></ label >
< p >< label > Expiry Date: < input type = month autocomplete = cc-exp ></ label >
< p >< input type = submit value = "Continue..." >
</ form >
以下の表に示すように、オートフィルフィールドキーワードは相互に関連する。このテーブルの行に記載された各フィールド名は、"意味"で分類される列で、その行のセルに与えられた意味に対応する。一部のフィールドは、他のフィールドのサブパーツに対応する。たとえば、クレジットカードの有効期限は、有効期限の年と月の両方を1つのフィールドに与える("cc-exp
")、または月を与える("cc-exp-month
")および年を与える("cc-exp-year
")の2つのフィールドとして表すことができる。このような場合、より広いフィールドの名前は、より狭いフィールドを定義する複数行を取り扱う。
一般に、狭いフィールドは西洋バイアスを公開する傾向があるので、著者は狭いフィールドよりもむしろ広いフィールドを使用することを推奨する。たとえば、その順序(例として、しばしば最初に名前と姓と呼ばれる)で、指定された名前と姓を持つように一部の欧米文化で一般的であるが、多くの文化では、最初の家族の名前を入れて、与えられた名前2番目に、および他の多くは、単に1つの名前を(mononym)を持つ。したがって、単一のフィールドを持つことは、より柔軟性がある。
一部のフィールドは、特定のフォームコントロールに適している。コントロールが、次の表でオートフィルフィールドを記述した最初の行の5列目でオートフィルフィールドにリストされたグループに属していない場合、オートフィルフィールド名は、コントロールには不適当である。 どのようなコントロールが各グループに分類されるかは、下記の表に記載される。
フィールド名 | 意味 | 標準的なフォーマット | 標準的なフォーマット例 | コントロールグループ | |||
---|---|---|---|---|---|---|---|
"name " | フルネーム | 自由形式テキスト、改行なし | Sir Timothy John Berners-Lee, OM, KBE, FRS, FREng, FRSA | テキスト | |||
"honorific-prefix " | 敬称または称号(たとえば、"Mr."、"Ms."、"Dr."、"Mlle") | 自由形式テキスト、改行なし | Sir | テキスト | |||
"given-name " | Given name(一部の西洋文化において、first nameとして知られる) | 自由形式テキスト、改行なし | Timothy | テキスト | |||
"additional-name " | Additional names(一部の西洋文化において、middle namesとして知られる) | 自由形式テキスト、改行なし | John | テキスト | |||
"family-name " | Family name(一部の西洋文化において、last nameまたはsurnameとして知られる) | 自由形式テキスト、改行なし | Berners-Lee | テキスト | |||
"honorific-suffix " | 接頭辞(たとえば、"Jr."、"B.Sc."、"MBASW"、"II") | 自由形式テキスト、改行なし | OM, KBE, FRS, FREng, FRSA | テキスト | |||
"nickname " | ニックネーム、スクリーンネーム、ハンドル:フルネームの代わりに使用する一般的に短い名前 | 自由形式テキスト、改行なし | Tim | テキスト | |||
"organization-title " | 職種(たとえば"Software Engineer"、"Senior Vice President"、"Deputy Managing Director") | 自由形式テキスト、改行なし | Professor | テキスト | |||
"username " | ユーザー名 | 自由形式テキスト、改行なし | timbl | Username | |||
"new-password " | 新しいパスワード(たとえば、アカウントの作成またはパスワードの変更の場合) | 自由形式テキスト、改行なし | GUMFXbadyrS3 | Password | |||
"current-password " | username フィールドによって識別されるアカウントに対する現在のパスワード(たとえば、ログイン時) | 自由形式テキスト、改行なし | qwerty | Password | |||
"one-time-code " | ユーザーの身元を確認するために使用されるワンタイムコード | 自由形式テキスト、改行なし | 123456 | Password | |||
"organization " | 人、アドレス、またはこのフィールドに関連付けられた他のフィールドの連絡先情報に対応する会社名 | 自由形式テキスト、改行なし | World Wide Web Consortium | テキスト | |||
"street-address " | 所在地住所(複数行、改行を保持) | 自由形式テキスト | 32 Vassar Street MIT Room 32-G524 | Multiline | |||
"address-line1 " | 所在地住所(フィールドごとに1行) | 自由形式テキスト、改行なし | 32 Vassar Street | テキスト | |||
"address-line2 " | 自由形式テキスト、改行なし | MIT Room 32-G524 | テキスト | ||||
"address-line3 " | 自由形式テキスト、改行なし | テキスト | |||||
"address-level4 " | 4つの行政レベルでの住所の中で、最もきめ細かい行政レベル。 | 自由形式テキスト、改行なし | テキスト | ||||
"address-level3 " | 3つ以上の行政レベルの住所で、第3行政レベル | 自由形式テキスト、改行なし | テキスト | ||||
"address-level2 " | 2つ以上の管理レベルの住所で、第2行政レベル。2つの行政レベルをもつ国で、これは通常、関連する所在地住所が見つけられる、市、町、村、または他の地方になる | 自由形式テキスト、改行なし | Cambridge | テキスト | |||
"address-level1 " | 住所で最も広範な行政レベル、すなわち位置関係が発見される中の地方。たとえば、アメリカで、これは州(state)になる。スイスで州(canton)になる。英国で、郵便町(post town)になる。 | 自由形式テキスト、改行なし | MA | テキスト | |||
"country " | 国コード | 妥当なISO 3166-1-alpha-2国コード [ISO3166] | US | テキスト | |||
"country-name " | 国名 | 自由形式テキスト、改行なし。一部の場合でcountry 由来 | US | テキスト | |||
"postal-code " | 郵便番号、ZIPコード、CEDEXコード(CEDEXの場合に"CEDEX"を、かつ関連する場合に郡を、address-level2 フィールドに追加する) | 自由形式テキスト、改行なし | 02139 | テキスト | |||
"cc-name " | 決済手段に与えられるようなフルネーム | 自由形式テキスト、改行なし | Tim Berners-Lee | テキスト | |||
"cc-given-name " | 決済手段に与えられるようなGiven name (一部の西洋文化において、first nameとして知られる) | 自由形式テキスト、改行なし | Tim | テキスト | |||
"cc-additional-name " | 決済手段に与えられるようなAdditional names(一部の西洋文化において、middle namesとして知られる) | 自由形式テキスト、改行なし | テキスト | ||||
"cc-family-name " | 決済手段に与えられるようなFamily name (一部の西洋文化において、last nameまたはsurnameとして知られる) | 自由形式テキスト、改行なし | Berners-Lee | テキスト | |||
"cc-number " | 決済手段(たとえばクレジットカード番号)を識別するコード | ASCII数字 | 4114360123456785 | テキスト | |||
"cc-exp " | 決済手段の有効期限 | 妥当な月文字列 | 2014-12 | Month | |||
"cc-exp-month " | 決済手段の有効期限の月コンポーネント | 1から12までの範囲で妥当な整数 | 12 | Numeric | |||
"cc-exp-year " | 決済手段の有効期限の年コンポーネント | 0より大きい妥当な整数 | 2014 | Numeric | |||
"cc-csc " | 決済手段のセキュリティコード(カードのセキュリティコード(CSC)、カード検証コード(CVC)、カード検証値(CVV)、署名欄コード(SPC)、クレジットカードID(CCID)などとして知られている) | ASCII数字 | 419 | テキスト | |||
"cc-type " | 決済手段の種類 | 自由形式テキスト、改行なし | Visa | テキスト | |||
"transaction-currency " | ユーザーが取引に使用を希望する通貨 | ISO 4217通貨コード[ISO4217] | GBP | テキスト | |||
"transaction-amount " | (たとえば、ビッドまたは販売価格を入力するときに)ユーザーが取引に望む金額 | 妥当な浮動小数点数 | 401.00 | Numeric | |||
"language " | 優先言語 | 妥当なBCP 47言語タグ[BCP47] | ja | テキスト | |||
"bday " | 誕生日 | 妥当な日付文字列 | 1955-06-08 | Date | |||
"bday-day " | 誕生日の日コンポーネント | 1から31までの範囲で妥当な整数 | 8 | Numeric | |||
"bday-month " | 誕生日の月コンポーネント | 1から12までの範囲で妥当な整数 | 6 | Numeric | |||
"bday-year " | 誕生日の年コンポーネント | 0より大きい妥当な整数 | 1955 | Numeric | |||
"sex " | 性別認識(たとえば、女性、ファファフィネ) | 自由形式テキスト、改行なし | Male | テキスト | |||
"url " | 会社、人、アドレス、またはこのフィールドに関連付けられる他のフィールドでの連絡先情報に対応するホームページまたは他のウェブページ | 妥当なURL文字列 | https://www.w3.org/People/Berners-Lee/ | URL | |||
"photo " | 会社、人、アドレス、またはこのフィールドに関連付けられる他のフィールドの連絡先情報に対応する、写真、アイコンまたは他の画像 | 妥当なURL文字列 | https://www.w3.org/Press/Stock/Berners-Lee/2001-europaeum-eighth.jpg | URL | |||
"tel " | 国コードを含む完全な電話番号 | ASCII数字およびU+0020 SPACE characters、接頭辞としてU+002B PLUS SIGN文字(+) | +1 617 253 5702 | Tel | |||
"tel-country-code " | 電話番号の国コードコンポーネント | ASCII数字、接頭辞としてU+002B PLUS SIGN文字(+) | +1 | テキスト | |||
"tel-national " | 適用される場合は国の内部の接頭辞とともに、国コードコンポーネントなしの電話番号 | ASCII数字およびU+0020 SPACE characters | 617 253 5702 | テキスト | |||
"tel-area-code " | 適用される場合は国の内部の接頭辞とともに、電話番号のエリアコードコンポーネント | ASCII数字 | 617 | テキスト | |||
"tel-local " | 国コードと市外局番コンポーネントなしの電話番号 | ASCII数字 | 2535702 | テキスト | |||
"tel-local-prefix " | コンポーネントが2つのコンポーネントに分割される場合に、市外局番に続く電話番号のコンポーネントの最初の部分 | ASCII数字 | 253 | テキスト | |||
"tel-local-suffix " | コンポーネントが2つのコンポーネントに分割される場合に、市外局番に続く電話番号のコンポーネントの2番目の部分 | ASCII数字 | 5702 | テキスト | |||
"tel-extension " | 電話番号の内部拡張コード | ASCII数字 | 1000 | テキスト | |||
"email " | 電子メールアドレス | 妥当な電子メールアドレス | timbl@w3.org | Username | |||
"impp " | インスタントメッセージングプロトコルのエンドポイントを表すURL(たとえば、"aim:goim?screenname=example "またはxmpp:fred@example.net ") | 妥当なURL文字列 | irc://example.org/timbl,isuser | URL |
次のようにグループがコントロールに対応する:
type
属性をもつinput
要素type
属性がText状態であるinput
要素type
属性がSearch状態であるinput
要素textarea
要素select
要素type
属性をもつinput
要素textarea
要素select
要素type
属性をもつinput
要素type
属性がText状態であるinput
要素type
属性がSearch状態であるinput
要素type
属性をもつinput
要素textarea
要素select
要素type
属性をもつinput
要素type
属性がText状態であるinput
要素type
属性がSearch状態であるinput
要素type
属性がURL状態であるinput
要素textarea
要素select
要素type
属性をもつinput
要素type
属性がText状態であるinput
要素type
属性がSearch状態であるinput
要素type
属性をもつinput
要素textarea
要素select
要素type
属性をもつinput
要素type
属性がText状態であるinput
要素type
属性がSearch状態であるinput
要素type
属性がTelephone状態であるinput
要素textarea
要素select
要素type
属性をもつinput
要素type
属性がText状態であるinput
要素type
属性がSearch状態であるinput
要素type
属性をもつinput
要素textarea
要素select
要素type
属性をもつinput
要素type
属性がText状態であるinput
要素type
属性がSearch状態であるinput
要素type
属性をもつinput
要素textarea
要素select
要素type
属性をもつinput
要素type
属性がText状態であるinput
要素type
属性がSearch状態であるinput
要素type
属性をもつinput
要素textarea
要素select
要素住所レベル:address-level1
" – "address-level4
"フィールドは、住所の場所を記述するために使用される。異なるロケールは、異なるレベルの数を持つ。たとえば、アメリカは2つのレベル(州および町)を使用し、イギリスは、住所に応じて1つまたは2つ(郵便町、場合によっては地域)を使用し、中国は3つ(県、市、区)を使用することができる。"address-level1
"フィールドは、最も広い行政区分を表す。異なるロケールは異なる方法でフィールドを順序づける。たとえば、アメリカの町(レベル2)は、州(レベル1)に先行して使用する。一方日本において都道府県(レベル1)は、地区(レベル3)に先行する市(レベル2)に先行する。著者は、(ユーザーが国を変えるのに応じてフィールドを隠す、表示するおよび再配置する)国の慣習と一致する方法で提示された形態を提供することを勧める。
input
要素とtextarea
要素は、それらの選択を処理するための複数の属性およびメソッドを定義する。共有アルゴリズムはここで定義される。
element.select()
Support in all current engines.
テキストコントロールにおけるすべてを選択する。
element.selectionStart [ = value ]
セレクションの開始オフセットを返す。
セレクションの開始を変更する設定が可能である。
element.selectionEnd [ = value ]
セレクションの終了オフセットを返す。
セレクションの終了を変更する設定が可能である。
element.selectionDirection [ = value ]
セレクションの現在の方向を返す。
セレクションの現在の方向を変更する設定が可能である。
可能な値は、"forward
"、"backward
"、"none
"である。
element.setSelectionRange(start, end [, direction])
指定された方向に指定された部分列をカバーするために選択を変更する。方向が省略された場合、方向がプラットフォームのデフォルト(なしまたは前方)になるようにリセットされる。
element.setRangeText(replacement [, start, end [, selectionMode ] ])
新しいテキストとともにテキストの範囲を置換する。startおよびend引数が提供されない場合、範囲は選択されることが想定される。
最後の引数は、テキストを交換した後に選択が設定されるかを決定する。可能な値は次のとおり:
select
"start
"end
"preserve
"現在選択されているテキストを取得するためには、次のJavaScriptで十分である:
var selectionText = control. value. substring( control. selectionStart, control. selectionEnd);
テキストの選択範囲を維持する一方で、テキストコントロールの開始時にテキストを追加するには、3つの属性が保持されなければならない:
var oldStart = control. selectionStart;
var oldEnd = control. selectionEnd;
var oldDirection = control. selectionDirection;
var prefix = "http://" ;
control. value = prefix + control. value;
control. setSelectionRange( oldStart + prefix. length, oldEnd + prefix. length, oldDirection);
element.willValidate
フォームが送信されるときに要素が認証される場合trueを返し、そうでなければfalseを返す。
element.setCustomValidity(message)
HTMLInputElement/setCustomValidity
Support in all current engines.
要素の検証に失敗するように、カスタムエラーを設定する。与えられたメッセージは、ユーザーに問題を報告するときにユーザーに表示されるメッセージである。
引数が空文字列である場合、カスタムエラーをクリアする。
element.validity.valueMissing
要素が値を持たないが必須フィールドである場合trueを返し、そうでなければfalseを返す。
element.validity.typeMismatch
Support in all current engines.
要素の値が正しい構文でない場合trueを返し、そうでなければfalseを返す。
element.validity.patternMismatch
Support in all current engines.
要素の値が提供されたパターンとマッチしない場合trueを返し、そうでなければfalseを返す。
element.validity.tooLong
要素の値が提供された最大長さより長い場合trueを返し、そうでなければfalseを返す。
element.validity.tooShort
要素の値が空文字列ではなく、提供された最小長さより短い場合trueを返し、そうでなければfalseを返す。
element.validity.rangeUnderflow
Support in all current engines.
要素の値が提供された最小値より短い場合trueを返し、そうでなければfalseを返す。
element.validity.rangeOverflow
Support in all current engines.
要素の値が提供された最大値より長い場合trueを返し、そうでなければfalseを返す。
element.validity.stepMismatch
Support in all current engines.
要素の値がstep
属性によって与えられる規則に合致しない場合trueを返し、そうでなければfalseを返す。
element.validity.badInput
ユーザーエージェントが値に変換できないユーザーインターフェイスで入力をユーザーが提供される場合trueを返し、そうでなければfalseを返す。
element.validity.customError
要素がカスタムエラーを持つ場合trueを返し、そうでなければfalseを返す。
element.validity.valid
要素の値が妥当性問題を持たない場合trueを返し、そうでなければfalseを返す。
valid = element.checkValidity()
要素の値が妥当性問題を持たない場合trueを返し、そうでなければfalseを返す。後者の場合要素でinvalid
イベントを発火する。
valid = element.reportValidity()
要素の値が一切妥当性の問題を持たない場合はtrueを返す。そうでなければfalseを返し、要素でinvalid
イベントを発火させ、そして(イベントが中止されない場合)ユーザーに問題を報告する。
element.validationMessage
要素が妥当性に対してチェックされた場合、ユーザーに表示されるエラーメッセージを返す。
次の例において、スクリプトは値が編集されるたびにフォームコントロールの値をチェックし、かつ妥当な値でない場合はいつでも、適切なメッセージを設定するためにsetCustomValidity()
メソッドを使用する。
< label > Feeling: < input name = f type = "text" oninput = "check(this)" ></ label >
< script >
function check( input) {
if ( input. value == "good" ||
input. value == "fine" ||
input. value == "tired" ) {
input. setCustomValidity( '"' + input. value + '" is not a feeling.' );
} else {
// input is fine -- reset the error message
input. setCustomValidity( '' );
}
}
</ script >
サーバーは、クライアント側の検証に依存すべきではない。クライアント側の検証は、悪意あるユーザーによって意図的にバイパスされ、古いユーザーエージェントまたは、これらの機能を実装しない自動化ツールのユーザーによって意図せずに回避されうる。制約検証機能は、あらゆる種類のセキュリティメカニズムを提供することでなく、ユーザーの利便性を向上させることのみを意図する。
フォームが送信されるとき、フォーム内のデータはenctypeで指定した構造体に変換され、指定したメソッドを使用するアクションで指定した宛先に送信される。
たとえば、次のような形式をとる:
< form action = "/find.cgi" method = get >
< input type = text name = t >
< input type = search name = q >
< input type = submit >
</ form >
ユーザーが最初のフィールドで"cat"および2番目で"猫"と入力し、次に送信ボタンを押す場合、ユーザーエージェントは/find.cgi?t=cats&q=fur
を読み込む。
一方、このフォームを考えてみる:
< form action = "/find.cgi" method = post enctype = "multipart/form-data" >
< input type = text name = t >
< input type = search name = q >
< input type = submit >
</ form >
同じユーザー入力を考えると、提出上の結果はかなり異なる:ユーザーエージェントは、次のテキストのようなエンティティボディとして、代わりに指定されたURLにHTTP POSTを行う。
------kYFrd4jNJEgCervE Content-Disposition: form-data; name="t" cats ------kYFrd4jNJEgCervE Content-Disposition: form-data; name="q" fur ------kYFrd4jNJEgCervE--
application/x-www-form-urlencoded
の詳細については、URLを参照のこと。[URL]
multipart/form-data
のペイロードを解釈する方法の詳細については、RFC 7578を参照のこと。[RFC7578]
text/plain
フォーマットを使用するペイロードは、人間可読であることを意図される。形式は不明瞭である(たとえば、値の末尾の改行と値でのリテラルの改行を区別する方法はない)ので、これらはコンピューターによって確実に解釈されない。
SubmitEvent
インターフェイスSupport in all current engines.
FormDataEvent
インターフェイスSupport in all current engines.
Support in all current engines.