1.仕様
FORM要素は、
フォームに関連付けられた
要素のコレクションを介して
操作できるハイパーリンクを
表します。
その一部は、処理の為に
サーバーに送信できる
編集可能な値を
表す事ができます。
FORM - - (%Flow)* -(form) -- interactive form. (Normal elements.) [Flow
- form
-
フォーム (interactive form)
- 種類
-
通常要素
- 使用できるコンテキスト
-
フロー
コンテンツ を受け入れる要素フロー
コンテンツ を受け入れる要素のコンテンツとして、使用できます。フロー
コンテンツ を受け入れる要素は、<body>要素 , <section>要素 , <nav>要素 , <aside>要素 , <article>要素 , <header>要素 , <footer>要素 , <main>要素 , <address>要素 , <li>要素 , <dt>要素 , <dd>要素 , <caption>要素 , <th>要素 , <td>要素 , <form>要素 , <fieldset>要素 , <search>要素 , <blockquote>要素 , <figure>要素 , <figcaption>要素 , <div>要素 , <dialog>要素 , <details>要素 です。 - コンテンツモデル
-
0個以上のフロー
コンテンツ (<form>要素 を除く)0個以上のフロー
コンテンツ が配置できます。ですが、<form>要素 は子孫に持てません。<form>
要素 を除くフローコンテンツ に分類される要素は、<header>要素 , <footer>要素 , <main>要素 , <address>要素 , <ol>要素 , <ul>要素 , <menu>要素 , <dl>要素 , <table>要素 , <fieldset>要素 , <search>要素 , <hr>要素 , <p>要素 , <pre>要素 , <blockquote>要素 , <figure>要素 , <div>要素 , <dialog>要素 , <section>要素 , <nav>要素 , <aside>要素 , <article>要素 , <h1>要素 , <h2>要素 , <h3>要素 , <h4>要素 , <h5>要素 , <h6>要素 , <hgroup>要素 , <script>要素 , <noscript>要素 , <template>要素 , <input>要素 , <textarea>要素 , <select>要素 , <label>要素 , <button>要素 , <output>要素 , <progress>要素 , <meter>要素 , <datalist>要素 , <picture>要素 , <object>要素 , <img>要素 , <iframe>要素 , <embed>要素 , <video>要素 , <audio>要素 , <canvas>要素 , <map>要素 , <area>要素 , <a>要素 , <details>要素 , <ins>要素 , <del>要素 , <abbr>要素 , <b>要素 , <bdi>要素 , <bdo>要素 , <cite>要素 , <code>要素 , <data>要素 , <dfn>要素 , <em>要素 , <i>要素 , <kbd>要素 , <mark>要素 , <q>要素 , <s>要素 , <samp>要素 , <small>要素 , <span>要素 , <strong>要素 , <sub>要素 , <sup>要素 , <u>要素 , <var>要素 , <time>要素 , <ruby>要素 , <br>要素 , <wbr>要素 , <slot>要素 , テキスト, <meta>要素 , <link>要素 です。form要素の子孫はありません。
- タグの省略
-
どちらのタグも省略できません。
- コンテンツ属性
-
グローバル属性 他
- accept-charset
属性 - フォーム送信に使用する文字エンコーディング
- action
属性 - フォーム送信に使用するURL
- autocomplete
属性 - フォーム内のコントロールの自動入力機能のデフォルト設定
- enctype
属性 - フォーム送信に使用するエントリリストのエンコードタイプ
- method
属性 - フォーム送信に使用するHTTPメソッド
- name
属性 - document.forms API で使用するフォームの名前
- novalidate
属性 - フォーム送信時のフォーム コントロールの検証をバイパスする
- target
属性 - フォーム送信にナビゲート可能
- rel
属性 - 要素が作成するリンクの種類を制御
- accept-charset
- DOM インターフェイス
-
HTMLFormElement
[Exposed=Window, LegacyOverrideBuiltIns, LegacyUnenumerableNamedProperties]
interface HTMLFormElement : HTMLElement {
[HTMLConstructor] constructor();
[CEReactions] attribute DOMString acceptCharset;
[CEReactions] attribute USVString action;
[CEReactions] attribute DOMString autocomplete;
[CEReactions] attribute DOMString enctype;
[CEReactions] attribute DOMString encoding;
[CEReactions] attribute DOMString method;
[CEReactions] attribute DOMString name;
[CEReactions] attribute boolean noValidate;
[CEReactions] attribute DOMString target;
[CEReactions] attribute DOMString rel;
[SameObject, PutForwards=value] readonly attribute DOMTokenList relList;
[SameObject] readonly attribute HTMLFormControlsCollection elements;
attribute unsigned long length;
getter Element (unsigned long index);
getter (RadioNodeList or Element) (DOMString name);
undefined submit();
undefined requestSubmit(optional HTMLElement? submitter = null);
[CEReactions] undefined reset();
boolean checkValidity();
boolean reportValidity();
};
HTMLElement
[Exposed=Window]
interface HTMLElement : Element {
[HTMLConstructor] constructor();
// metadata attributes
[CEReactions] attribute DOMString title;
[CEReactions] attribute DOMString lang;
[CEReactions] attribute boolean translate;
[CEReactions] attribute DOMString dir;
// user interaction
[CEReactions] attribute (boolean or unrestricted double or DOMString)? hidden;
[CEReactions] attribute DOMString inert;
undefined click();
[CEReactions] attribute DOMString accessKey;
readonly attribute DOMString accessKeyLabel;
[CEReactions] attribute boolean draggable;
[CEReactions] attribute boolean spellcheck;
[CEReactions] attribute DOMString writingSuggestions;
[CEReactions] attribute DOMString autocapitalize;
[CEReactions] attribute [LegacyNullToEmptyString] DOMString innerText;
[CEReactions] attribute [LegacyNullToEmptyString] DOMString outerText;
ElementInternals attachInternals();
// The popover API
undefined showPopover();
undefined hidePopover();
boolean togglePopover(optional boolean force);
[CEReactions] attribute DOMString? popover;
};
HTMLElement includes GlobalEventHandlers;
HTMLElement includes ElementContentEditable;
HTMLElement includes HTMLOrSVGElement;
Element
[Exposed=Window]
interface Element : Node {
readonly attribute DOMString? namespaceURI;
readonly attribute DOMString? prefix;
readonly attribute DOMString localName;
readonly attribute DOMString tagName;
[CEReactions] attribute DOMString id;
[CEReactions] attribute DOMString className;
[SameObject, PutForwards=value] readonly attribute DOMTokenList classList;
[CEReactions, Unscopable] attribute DOMString slot;
boolean hasAttributes();
[SameObject] readonly attribute NamedNodeMap attributes;
sequence<DOMString> getAttributeNames();
DOMString? getAttribute(DOMString qualifiedName);
DOMString? getAttributeNS(DOMString? namespace, DOMString localName);
[CEReactions] undefined setAttribute(DOMString qualifiedName, DOMString value);
[CEReactions] undefined setAttributeNS(DOMString? namespace, DOMString qualifiedName, DOMString value);
[CEReactions] undefined removeAttribute(DOMString qualifiedName);
[CEReactions] undefined removeAttributeNS(DOMString? namespace, DOMString localName);
[CEReactions] boolean toggleAttribute(DOMString qualifiedName, optional boolean force);
boolean hasAttribute(DOMString qualifiedName);
boolean hasAttributeNS(DOMString? namespace, DOMString localName);
Attr? getAttributeNode(DOMString qualifiedName);
Attr? getAttributeNodeNS(DOMString? namespace, DOMString localName);
[CEReactions] Attr? setAttributeNode(Attr attr);
[CEReactions] Attr? setAttributeNodeNS(Attr attr);
[CEReactions] Attr removeAttributeNode(Attr attr);
ShadowRoot attachShadow(ShadowRootInit init);
readonly attribute ShadowRoot? shadowRoot;
Element? closest(DOMString selectors);
boolean matches(DOMString selectors);
boolean webkitMatchesSelector(DOMString selectors); // legacy alias of .matches
HTMLCollection getElementsByTagName(DOMString qualifiedName);
HTMLCollection getElementsByTagNameNS(DOMString? namespace, DOMString localName);
HTMLCollection getElementsByClassName(DOMString classNames);
[CEReactions] Element? insertAdjacentElement(DOMString where, Element element); // legacy
undefined insertAdjacentText(DOMString where, DOMString data); // legacy
};
GlobalEventHandlers
interface mixin GlobalEventHandlers {
attribute EventHandler onabort;
attribute EventHandler onauxclick;
attribute EventHandler onbeforeinput;
attribute EventHandler onbeforematch;
attribute EventHandler onbeforetoggle;
attribute EventHandler onblur;
attribute EventHandler oncancel;
attribute EventHandler oncanplay;
attribute EventHandler oncanplaythrough;
attribute EventHandler onchange;
attribute EventHandler onclick;
attribute EventHandler onclose;
attribute EventHandler oncontextlost;
attribute EventHandler oncontextmenu;
attribute EventHandler oncontextrestored;
attribute EventHandler oncopy;
attribute EventHandler oncuechange;
attribute EventHandler oncut;
attribute EventHandler ondblclick;
attribute EventHandler ondrag;
attribute EventHandler ondragend;
attribute EventHandler ondragenter;
attribute EventHandler ondragleave;
attribute EventHandler ondragover;
attribute EventHandler ondragstart;
attribute EventHandler ondrop;
attribute EventHandler ondurationchange;
attribute EventHandler onemptied;
attribute EventHandler onended;
attribute OnErrorEventHandler onerror;
attribute EventHandler onfocus;
attribute EventHandler onformdata;
attribute EventHandler oninput;
attribute EventHandler oninvalid;
attribute EventHandler onkeydown;
attribute EventHandler onkeypress;
attribute EventHandler onkeyup;
attribute EventHandler onload;
attribute EventHandler onloadeddata;
attribute EventHandler onloadedmetadata;
attribute EventHandler onloadstart;
attribute EventHandler onmousedown;
[LegacyLenientThis] attribute EventHandler onmouseenter;
[LegacyLenientThis] attribute EventHandler onmouseleave;
attribute EventHandler onmousemove;
attribute EventHandler onmouseout;
attribute EventHandler onmouseover;
attribute EventHandler onmouseup;
attribute EventHandler onpaste;
attribute EventHandler onpause;
attribute EventHandler onplay;
attribute EventHandler onplaying;
attribute EventHandler onprogress;
attribute EventHandler onratechange;
attribute EventHandler onreset;
attribute EventHandler onresize;
attribute EventHandler onscroll;
attribute EventHandler onscrollend;
attribute EventHandler onsecuritypolicyviolation;
attribute EventHandler onseeked;
attribute EventHandler onseeking;
attribute EventHandler onselect;
attribute EventHandler onslotchange;
attribute EventHandler onstalled;
attribute EventHandler onsubmit;
attribute EventHandler onsuspend;
attribute EventHandler ontimeupdate;
attribute EventHandler ontoggle;
attribute EventHandler onvolumechange;
attribute EventHandler onwaiting;
attribute EventHandler onwebkitanimationend;
attribute EventHandler onwebkitanimationiteration;
attribute EventHandler onwebkitanimationstart;
attribute EventHandler onwebkittransitionend;
attribute EventHandler onwheel;
};
ElementContentEditable
interface mixin ElementContentEditable {
[CEReactions] attribute DOMString contentEditable;
[CEReactions] attribute DOMString enterKeyHint;
readonly attribute boolean isContentEditable;
[CEReactions] attribute DOMString inputMode;
};
HTMLOrSVGElement
interface mixin HTMLOrSVGElement {
[SameObject] readonly attribute DOMStringMap dataset;
attribute DOMString nonce; // intentionally no [CEReactions]
[CEReactions] attribute boolean autofocus;
[CEReactions] attribute long tabIndex;
undefined focus(optional FocusOptions options = {});
undefined blur();
};
- ARIA in HTML
-
暗黙的="
form
" ARIAロール="あり" aria-* 属性="GlobalAny
"暗黙的な ARIAセマンティクスは、
role=form
です。作成者が要素に指定してもよい ARIAロール値は、 none, presentation, search です。
グローバル aria-* 属性と、許可されたロールに適用される任意の aria-* 属性が記述できます。
- レンダリング
- ブロック
ボックス フローコンテンツ
form {
display: block;
margin-block-end: 1em;
unicode-bidi: isolate;
}
:is(table, thead, tbody, tfoot, tr) > form {
display: none !important;
}
CSS を大雑把に読むと、 ブロックレベルのブロックコンテナボックス(ブロックボックス)を生成します。 などになります。
- 説明
-
form
要素 は、フォーム関連要素のコレクションを通じて操作できるハイパーリンクを表します。その一部は、処理のためにサーバーに送信できる編集可能な値を表すことができます。<!DOCTYPE html>
<html lang=
"ja"> <head>
<meta charset=
"utf-8"> <title>
form要素の例 - (Example of form element) | 離珠のHTMLでしぃ!</title> </head>
<body>
<h1>
form要素の例</h1> <form action=
"../Html/fmreceive.htm"> <input name=
"nipInput" value= "abc"> <button name=
"nbtSender" value= "../Html/exform.htm"> ボタン</button> <br>受信用の<br>ページへ
</form>
</body>
</html>
このサンプルへのリンクです。
(./exform.htm) - 参照元
-
参照元
- HTML Living Standard. 4.10.3 The form element (Last Updated 27 August 2024)
- HTML Living Standard. 15 Rendering 15.3.3 Flow content (Last Updated 27 August 2024)
- HTML 5.2 W3C 勧告. 4.10.3 The form element (W3C勧告、2017年12月14日)
- HTML 5.2 W3C 勧告. 10.3.3. Flow content. (W3C勧告、2017年12月14日)
- HTML 5.1 W3C 勧告. 4.10.3 The form element (W3C勧告、2016年11月1日)
- HTML 5.1 W3C 勧告. 10.3.3. Flow content. (W3C勧告、2016年11月1日)
- HTML 5 W3C 勧告. 4.10.3 The form element (W3C勧告、2014年10月28日)
- HTML 5 W3C 勧告. 10.3.3. Flow content. (W3C勧告、2014年10月28日)
- HTML 4.01 Specification W3C 勧告. 17.3 The FORM elements (W3C勧告1999年12月24日)
- HTML 3.2 Reference Specification (W3C勧告1997年1月14日)
- Hypertext Markup Language - 2.0 (November 1995)
- <form>: フォーム要素 - HTML: ハイパーテキストマークアップ言語 | MDN
- JSONデータ
-
JSON形式での、データのイメージです。
{
"form": {
"check": "2024-09-01",
"group": "Form",
"element": "- - (%Flow)* -(form) -- interactive form. (Normal elements.) [Flow|Palpable] --",
"attlist": {
"%Global;": "",
"accept-charset": "%Charsets; #IMPLIED -- Character encodings to use for form submission --",
"action": "%URI; #IMPLIED -- URL to use for form submission --",
"autocomplete": "(on|off) on -- Default setting for autofill feature for controls in the form --",
"enctype": "%ContentType; application/x-www-form-urlencoded -- Entry list encoding type to use for form submission --",
"method": "(get|post|dialog) get -- Variant to use for form submission--",
"name": "CDATA #IMPLIED -- Name of form to use in the document.forms API --",
"novalidate": "(novalidate) #IMPLIED -- Bypass form control validation for form submission --",
"target": "%FrameTarget; #IMPLIED -- Navigable for form submission --",
"rel": "%LinkTypes; #IMPLIED -- Relationship from the current document --",
},
"comment": "フォーム (interactive form)",
"point": "フォーム関連要素のコレクションを通じて操作できるハイパーリンクを表します。その一部は、処理のためにサーバーに送信できる編集可能な値を表すことができます。",
"kind": "Normal",
"categories": [
"Flow",
"Palpable",
],
"used": "parent (%Flow)*",
"contentmodel": "form (%Flow)* -(form)",
"contentmodelsupplement": "form要素の子孫はありません。",
"tag": [
"-",
"-",
],
"attributes": {
"accept-charset": "フォーム送信に使用する文字エンコーディング",
"action": "フォーム送信に使用するURL",
"autocomplete": "フォーム内のコントロールの自動入力機能のデフォルト設定",
"enctype": "フォーム送信に使用するエントリリストのエンコードタイプ",
"method": "フォーム送信に使用するHTTPメソッド",
"name": "document.forms API で使用するフォームの名前",
"novalidate": "フォーム送信時のフォーム コントロールの検証をバイパスする",
"target": "フォーム送信にナビゲート可能",
"rel": "要素が作成するリンクの種類を制御",
},
"dominterface": "HTMLFormElement",
"rendering": [
"Flow",
"Bidirectional",
],
"reference": [
{
"title": "HTML Living Standard. 4.10.3 The form element.",
"href": "https://html.spec.whatwg.org/multipage/forms.html#the-form-element",
"heading": "HTML Living Standard. 4.10.3 The form element",
"sub": "Last Updated 27 August 2024",
},
{
"title": "HTML Living Standard. 15 Rendering 15.3.3 Flow content.",
"href": "https://html.spec.whatwg.org/multipage/rendering.html#flow-content-3",
"heading": "HTML Living Standard. 15 Rendering 15.3.3 Flow content",
"sub": "Last Updated 27 August 2024",
},
{
"title": "HTML 5.2 W3C Recommendation. 4.10.3 The form element. W3C Recommendation, 14 December 2017.",
"href": "https://www.w3.org/TR/2017/REC-html52-20171214/sec-forms.html#the-form-element",
"heading": "HTML 5.2 W3C 勧告. 4.10.3 The form element",
"sub": "W3C勧告、2017年12月14日",
},
{
"title": "HTML 5.2 W3C Recommendation. 10.3.3. Flow content.",
"href": "https://www.w3.org/TR/2017/REC-html52-20171214/rendering.html#non-replaced-elements-flow-content",
"heading": "HTML 5.2 W3C 勧告. 10.3.3. Flow content.",
"sub": "W3C勧告、2017年12月14日",
},
{
"title": "HTML 5.1 W3C Recommendation. 4.10.3 The form element. W3C Recommendation, 1 November 2016.",
"href": "https://www.w3.org/TR/2016/REC-html51-20161101/sec-forms.html#the-form-element",
"heading": "HTML 5.1 W3C 勧告. 4.10.3 The form element",
"sub": "W3C勧告、2016年11月1日",
},
{
"title": "HTML 5.1 W3C Recommendation. 10.3.3. Flow content. W3C Recommendation, 1 November 2016.",
"href": "https://www.w3.org/TR/2016/REC-html51-20161101/rendering.html#non-replaced-elements-flow-content",
"heading": "HTML 5.1 W3C 勧告. 10.3.3. Flow content.",
"sub": "W3C勧告、2016年11月1日",
},
{
"title": "HTML 5 W3C Recommendation. 4.10.3 The form element. W3C Recommendation, 28 October 2014.",
"href": "https://www.w3.org/TR/2014/REC-html5-20141028/forms.html#the-form-element",
"heading": "HTML 5 W3C 勧告. 4.10.3 The form element",
"sub": "W3C勧告、2014年10月28日",
},
{
"title": "HTML 5 W3C Recommendation. 10.3.3. Flow content. W3C Recommendation, 28 October 2014.",
"href": "https://www.w3.org/TR/2014/REC-html5-20141028/rendering.html#flow-content-0",
"heading": "HTML 5 W3C 勧告. 10.3.3. Flow content.",
"sub": "W3C勧告、2014年10月28日",
},
{
"title": "HTML 4.01 Specification W3C Recommendation. 17.3 The FORM element. W3C Recommendation 24 December 1999.",
"href": "https://www.w3.org/TR/html401/interact/forms.html#h-17.3",
"heading": "HTML 4.01 Specification W3C 勧告. 17.3 The FORM elements",
"sub": "W3C勧告1999年12月24日",
},
{
"title": "HTML 3.2 Reference Specification. W3C Recommendation 14-Jan-1997.",
"href": "https://www.w3.org/TR/2018/SPSD-html32-20180315/#form",
"heading": "HTML 3.2 Reference Specification",
"sub": "W3C勧告1997年1月14日",
},
{
"title": "Hypertext Markup Language - 2.0. November 1995.",
"href": "https://www.ietf.org/rfc/rfc1866.txt",
"heading": "Hypertext Markup Language - 2.0",
"sub": "November 1995",
},
{
"title": "MDN Web Docs. HTML <form>: The Form element.",
"href": "https://developer.mozilla.org/ja/docs/Web/HTML/Element/form",
"heading": "<form>: フォーム要素 - HTML: ハイパーテキストマークアップ言語 | MDN",
},
],
"version": {
"first": "HTML2",
"latest": "HTML Living Standard",
},
}
}
注意: 簡易に描画する為に、各項目の後ろに
,
を付与しています。JSON の形式では、末尾の項目の後には,
は付けません。 - 最終確認日
-
2024-09-01
2.使用できるコンテキスト
form要素は、
フローコンテンツを
受け入れる要素に
配置できます。
<form>
フロー
<body>
<form action=
"../Html/fmreceive.htm"> <input name=
"nipInput" value= "abc"> <button name=
"nbtSender" value= "../Html/spform.htm"> ボタン</button> </form>
</body>
<body>
3.コンテンツモデル
form要素は、
フローコンテンツを
配置できます。
<form>
フロー
- <header>
要素 - <footer>
要素 - <main>
要素 - <address>
要素 - <ol>
要素 - <ul>
要素 - <menu>
要素 - <dl>
要素 - <table>
要素 - <fieldset>
要素 - <search>
要素 - <hr>
要素 - <p>
要素 - <pre>
要素 - <blockquote>
要素 - <figure>
要素 - <div>
要素 - <dialog>
要素 - <section>
要素 - <nav>
要素 - <aside>
要素 - <article>
要素 - <h1>
要素 - <h2>
要素 - <h3>
要素 - <h4>
要素 - <h5>
要素 - <h6>
要素 - <hgroup>
要素 - <script>
要素 - <noscript>
要素 - <template>
要素 - <input>
要素 - <textarea>
要素 - <select>
要素 - <label>
要素 - <button>
要素 - <output>
要素 - <progress>
要素 - <meter>
要素 - <datalist>
要素 - <picture>
要素 - <object>
要素 - <img>
要素 - <iframe>
要素 - <embed>
要素 - <video>
要素 - <audio>
要素 - <canvas>
要素 - <map>
要素 - <area>
要素 - <a>
要素 - <details>
要素 - <ins>
要素 - <del>
要素 - <abbr>
要素 - <b>
要素 - <bdi>
要素 - <bdo>
要素 - <cite>
要素 - <code>
要素 - <data>
要素 - <dfn>
要素 - <em>
要素 - <i>
要素 - <kbd>
要素 - <mark>
要素 - <q>
要素 - <s>
要素 - <samp>
要素 - <small>
要素 - <span>
要素 - <strong>
要素 - <sub>
要素 - <sup>
要素 - <u>
要素 - <var>
要素 - <time>
要素 - <ruby>
要素 - <br>
要素 - <wbr>
要素 - <slot>
要素 - テキスト
- <meta>
要素 (itemprop属性が存在する) - <link>
要素 (itemprop属性が存在する、または body-ok なキーワードのみを含む rel 属性が存在する)
content
<body>
<form action=
"../Html/fmreceive.htm"> <input name=
"nipInput" value= "abc"> <button name=
"nbtSender" value= "../Html/spform.htm"> ボタン</button> </form>
</body>
<form>
フォーム関連要素は、デフォルトで、その最も近い祖先の<form>
配置に関係なくフォーム所有者とフォーム関連要素の関連付けをする方法もありますので、無理に<form>
4.コンテンツ属性
form要素は、
グローバル属性と、
accept-charset属性,
action属性,
autocomplete属性,
enctype属性,
method属性,
name属性,
novalidate属性,
target属性,
rel属性 を
配置できます。
<form>
accept-charset属性
<form action=
"../Html/fmreceive.htm" accept-charset= "UTF-8" ><button name=
"nbtSender" value= "../Html/spform.htm#MH3ACCEPTCHARSET"> ボタン</button> </form>
accept-charset
属性値の"UTF-8"
の例示は推奨でもありますが、その文書や受信側都合で別のコードである必要もあります。その場合は、別途にお調べ下さい。というか、普段はこの属性は省略して、必要に応じて記述するべきかと思います。
※ ボタンを押すと、受信用のページへ送信します。
action属性
<form action=
"../Html/fmreceive.htm" ><button name=
"nbtSender" value= "../Html/spform.htm#MH3ACTION"> ボタン</button> </form>
action
要素のアクションは、要素が送信ボタンでそのような属性を持つ場合は要素のformaction
属性値の"../Html/fmreceive.htm"
の例示は当サイトで送信の例示用(受信用)に用意したページです。相対指定での記述を採用したので、配置が変わった場合などは書き換えが必要です。
※ ボタンを押すと、受信用のページへ送信します。
autocomplete属性
<form action=
"../Html/fmreceive.htm" autocomplete= "" id="JFO403"> <input name=
"nipInput" value= "abc"> <button name=
"nbtSender" value= "../Html/spform.htm#MH3AUTOCOMPLETE"> ボタン</button> </form>
autocomplete
autocomplete
- on
- フォームコントロールでは、自動入力フィールド名がデフォルトで「オン」に設定されます。
- off
- フォームコントロールでは、自動入力フィールド名がデフォルトで「オフ」に設定されます。
列挙属性と呼ばれる一部の属性は、有限の状態セットを取ります。このような属性の状態は、属性の値、各属性の仕様で指定されたキーワード/状態マッピングのセット、および属性の仕様で指定できる 2 つの特殊な状態を組み合わせることによって生成されます。これらの特殊な状態は、無効な値のデフォルトと欠落した値のデフォルトです。
この属性の欠落値のデフォルトと無効な値のデフォルトは両方とも on の状態です。
例示として用意していますが、初期の状態で on にしても、提示する値がないので違いは判りません。また off はクリアではないので、その後で on にすると提示すべき値が再度表示されます。
例示に於いて、見易さの為に<input>
enctype属性
<form action=
"../Html/fmreceive.htm" enctype= "" id="JFO404"> <input name=
"nipInput" value= "abc"> <button name=
"nbtSender" value= "../Html/spform.htm#MH3ENCTYPE"> ボタン</button> </form>
enctype
enctype
- 「application/x-www-form-urlencoded」キーワードと対応する状態。
- 「multipart/form-data」キーワードと対応する状態。
- 「text/plain」キーワードと対応する状態。
列挙属性と呼ばれる一部の属性は、有限の状態セットを取ります。このような属性の状態は、属性の値、各属性の仕様で指定されたキーワード/状態マッピングのセット、および属性の仕様で指定できる 2 つの特殊な状態を組み合わせることによって生成されます。これらの特殊な状態は、無効な値のデフォルトと欠落した値のデフォルトです。
この属性の欠落値のデフォルトと無効な値のデフォルトは両方とも application/x-www-form-urlencoded の状態です。
要素の enctype は、これら 3 つの状態の 1 つです。要素が送信ボタンであり、formenctype
一応は例示としてデモを提示していますが、この記述では違いが現れないと思います。必要に応じて指定して下さい。
method属性
<form action=
"../Html/fmreceive.htm" method= "" id="JFO405"> <input name=
"nipInput" value= "abc"> <button name=
"nbtSender" value= "../Html/spform.htm#MH3METHOD"> ボタン</button> </form>
method
method
- get
- フォームが HTTP GET メソッドを使用することを示します。
- post
- フォームが HTTP POST メソッドを使用することを示します。
- dialog
- フォームが存在するダイアログボックスがあればそれを閉じ、それ以外の場合は送信しないことをフォームが意図していることを示します。
列挙属性と呼ばれる一部の属性は、有限の状態セットを取ります。このような属性の状態は、属性の値、各属性の仕様で指定されたキーワード/状態マッピングのセット、および属性の仕様で指定できる 2 つの特殊な状態を組み合わせることによって生成されます。これらの特殊な状態は、無効な値のデフォルトと欠落した値のデフォルトです。
この属性の欠落値のデフォルトと無効な値のデフォルトは両方とも get の状態です。
要素の method は、これら 3 つの状態の 1 つです。要素が送信ボタンであり、formmethod
一応は例示としてデモを提示していますが、この例示で用意している送信先では受信データを処理していないので効果が分かり難いです。必要に応じて指定して下さい。一応は URL で送信データが見えるか否かの違いは判りますが。尚、post には受信側で対応していないので、どこから送信されたか判らない仕様です。「戻る」で戻るか上位ページへリンクを辿るかして下さい。
name属性
<form action=
"../Html/fmreceive.htm" name= "nfoForm406" ><button name=
"nbtSender" value= "../Html/spform.htm#MH3NAME"> ボタン</button> </form>
name
novalidate属性
<form action=
"../Html/fmreceive.htm" id= "JFO407"> <input name=
"nipInput" required= "true"> <button name=
"nbtSender" value= "../Html/spform.htm#MH3NOVALIDATE"> ボタン</button> </form>
novalidate
要素の no-validate 状態は、要素が送信ボタンであり、要素のformnovalidate
<input>
例示に於いて、見易さの為に<input>
target属性
<form action=
"../Html/fmreceive.htm" target= "nifTarget" ><button name=
"nbtSender" value= "../Html/spform.htm#MH3TARGET"> ボタン</button> </form>
<iframe name=
"nifTarget" style= "width: 95%"> </iframe>
target
target および formtargetコンテンツ属性が指定されている場合、その値は有効なナビゲート可能なターゲット名またはキーワードである必要があります。キーワードは ASCII 大文字と小文字を区別せずに、
- _blank: new
- _self: current
- _parent: parent
- _top: top
例示では<iframe>
rel属性
<form action=
"../Html/fmreceive.htm" rel= "next" ><button name=
"nbtSender" value= "../Html/spform.htm#MH3REL"> ボタン</button> </form>
rel
一応は例示としてデモを提示していますが、動作に効果のある属性ではないと思います。なのでキーワードの動的指定の提示も行っていません。
id属性
<form action=
"../Html/fmreceive.htm" id= "FFO410" ></form> <button form=
"FFO410" name= "nbtSender" value= "../Html/spform.htm#MH3ID"> ボタン</button>
id
例示では、<button>
他の属性で提示している例示では、<form>
尚、id
5.DOM インターフェイス
documentの
プロパティである
formsは、
文書内の
form要素
(HTMLFormElement
オブジェクト)の
HTMLCollectionを
返します。
<form>forms
があります。document.forms[name]
などと指定する事で、当該フォームを取得できます。document.forms[index]
などと添え字を 0 から 件数 - 1 まで指定する事で、文書内のフォームを一通り取得できます。
formsプロパティ
[Exposed=Window, LegacyUnenumerableNamedProperties]
interface HTMLCollection {
readonly attribute unsigned long lang;
getter Element? item(unsigned long index);
getter Element? namedItem(DOMString name);
};
<div>
この文書のフォームは、
<div id=
"JDV501"> 〇〇</div> </div>
<script>
document
.addEventListener( "DOMContentLoaded", function() { let _loJsForms501 = document
.forms; let _loJsDemo501 = document
.getElementById( "JDV501"); let _loJsList501 = document
.createElement( "ol"); for (let _lnJsIdx = 0; _lnJsIdx < _loJsForms501
.length; _lnJsIdx++) { let _loJsItem501 = document
.createElement( "li"); let _loJsSpan501 = document
.createElement( "span"); _loJsSpan501
.textContent = 'index=' + _lnJsIdx + '. name="' + _loJsForms501[_lnJsIdx].name + (_loJsForms501[_lnJsIdx].nbtSender ? '" nbtSender=' + _loJsForms501[_lnJsIdx].nbtSender.value : (_loJsForms501[_lnJsIdx]?'" action="' + _loJsForms501[_lnJsIdx].action + '"':'"')); _loJsItem501
.appendChild( _loJsSpan501); _loJsList501
.appendChild( _loJsItem501); }
if (_loJsList501
.childElementCount) { _loJsDemo501
.textContent = ""; while (_loJsDemo501
.firstChild) { _loJsDemo501
.removeChild( _loJsDemo501 .firstChild); }
_loJsDemo501
.appendChild( _loJsList501); }
});
</script>
コレクションは、ノードのリストを表すオブジェクトです。
例示では、この文書の<form>
作成者の決め事として、送信ボタンに送信元が分かる値を nbtSender という名前で用意するという事にしているので、ついででそれを出力しています。
目的の為の手段の提示ではなく、この方法でこんな事が出来るという機能の提示です。これを元にいろいろ書き換える事を想定していて、ただ機能を提示しています。故に簡素化, 処理速度などは一切考えていません。
例示で表示する為に、HTML文書の読み込みと解析が終了した時に処理するコードとしています。 また見易さの為に、属性値の部分に対してスタイルシートで文字列の途中で折り返す様に指定しています。
document
の querySelector
メソッド等を用いる事も考えられますが、このプロパティで充分でしょう。名前で特定したい場合でも、属性セレクタで同等の事は出来ますが。
コンテンツ属性
コンテンツ属性 | IDL属性 | 提備考 |
---|---|---|
accept-charset | acceptCharset | |
action | action | |
autocomplete | autocomplete | IDL属性は、既知の値のみに制限されます。 |
enctype | enctype | |
enctype | encoding | 既知の値のみに制限された enctypeコンテンツ属性を反映 |
method | method | |
name | name | |
novalidate | noValidate | |
target | target | |
rel | rel | |
rel | relList | relコンテンツ属性を反映 |
<form action=
"../Html/fmreceive.htm" accept-charset= "UTF-8" autocomplete= "on" enctype= "application/x-www-form-urlencoded" method= "get" name= "nfoForm502" novalidate target= "_top" rel= "next"> <input name=
"nipText" required> <button name=
"nbtSender" value= "./spform.htm#MAP5NEXT"> ボタン</button> </form>
<div>
このフォームの各値は、
<div id=
"JDV502"> 〇〇</div> </div>
<script>
document
.addEventListener( "DOMContentLoaded", function() { let _loJsForm502 = document
.forms["nfoForm502"]; let _loJsDemo502 = document
.getElementById( "JDV502"); _loJsDemo502
.textContent = ""; let _loJsList502 = document
.createElement( "ul"); _loJsDemo502
.appendChild( _loJsList502); _loJsList502
.appendChild( document .createElement( "li")) .appendChild( document .createElement( "span")) .textContent = 'action="' + _loJsForm502 .action + '"'; _loJsList502
.appendChild( document .createElement( "li")) .appendChild( document .createElement( "span")) .textContent = 'acceptCharset="' + _loJsForm502 .acceptCharset + '"'; _loJsList502
.appendChild( document .createElement( "li")) .appendChild( document .createElement( "span")) .textContent = 'autocomplete="' + _loJsForm502 .autocomplete + '"'; _loJsList502
.appendChild( document .createElement( "li")) .appendChild( document .createElement( "span")) .textContent = 'enctype="' + _loJsForm502 .enctype + '"'; _loJsList502
.appendChild( document .createElement( "li")) .appendChild( document .createElement( "span")) .textContent = 'encoding="' + _loJsForm502 .encoding + '"'; _loJsList502
.appendChild( document .createElement( "li")) .appendChild( document .createElement( "span")) .textContent = 'method="' + _loJsForm502 .method + '"'; _loJsList502
.appendChild( document .createElement( "li")) .appendChild( document .createElement( "span")) .textContent = 'name="' + _loJsForm502 .name + '"'; _loJsList502
.appendChild( document .createElement( "li")) .appendChild( document .createElement( "span")) .textContent = 'noValidate="' + _loJsForm502 .noValidate + '"'; _loJsList502
.appendChild( document .createElement( "li")) .appendChild( document .createElement( "span")) .textContent = 'target="' + _loJsForm502 .target + '"'; _loJsList502
.appendChild( document .createElement( "li")) .appendChild( document .createElement( "span")) .textContent = 'rel="' + _loJsForm502 .rel + '"'; });
</script>
HTMLの要素に記述(設定)する属性を、コンテンツ
この例示は、ひとつの<form>
例示で表示する為に、HTML文書の読み込みと解析が終了した時に処理するコードとしています。 また見易さの為に、属性値の部分に対してスタイルシートで文字列の途中で折り返す様に指定しています。
尚、getAttributeメソッドなどを使って、コンテンツ
elementsプロパティ
[Exposed=Window]
interface HTMLFormControlsCollection : HTMLCollection {
// inherits length and item()
getter (RadioNodeList or Element)? namedItem(DOMString name);
// shadows inherited namedItem()
};
[Exposed=Window]
interface RadioNodeList : NodeList {
attribute DOMString value;
};
<form action=
"../Html/fmreceive.htm" name= "nfoForm503"> <input name=
"nipInput" onchange= "fuJsElements503();"> <button name=
"nbtSender" value= "../Html/spform.htm#MAP5NEXT"> ボタン</button> </form>
<div>
このフォームのフォームコントロールは、
<div id=
"JDV503"> 〇〇</div> </div>
<script>
var fuJsElements503 = function() {
let _loJsElements503 = document
.forms["nfoForm503"] ;.elements let _loJsDemo503 = document
.getElementById( "JDV503"); let _loJsList503 = document
.createElement( "ul"); _loJsDemo503
.appendChild( _loJsList503); for (let _lnJsIdx = 0; _lnJsIdx < _loJsElements503
.length; _lnJsIdx++) { _loJsList503
.appendChild( document .createElement( "li")) .appendChild( document .createElement( "span")) .textContent = 'tagName="' + _loJsElements503[_lnJsIdx] .tagName + ' name="' + _loJsElements503[_lnJsIdx] .name + ' value="' + _loJsElements503[_lnJsIdx] .value + '"'; }
if (_loJsList503
.childElementCount) { _loJsDemo503
.textContent = ""; while (_loJsDemo503
.firstChild) { _loJsDemo503
.removeChild( _loJsDemo503 .firstChild); }
_loJsDemo503
.appendChild( _loJsList503); }
}
document
.addEventListener( "DOMContentLoaded", function() { fuJsElements503();
});
</script>
elements IDL
例示では、form
目的の為の手段の提示ではなく、この方法でこんな事が出来るという機能の提示です。これを元にいろいろ書き換える事を想定していて、ただ機能を提示しています。故に簡素化, 処理速度などは一切考えていません。
例示で表示する為に、HTML文書の読み込みと解析が終了した時に処理するコードとしています。 また見易さの為に、属性値の部分に対してスタイルシートで文字列の途中で折り返す様に指定しています。
document
の querySelector
メソッド等を用いる事も考えられますが、このプロパティで充分でしょう。名前で特定したい場合でも、属性セレクタで同等の事は出来ますが、
6.アクセシビリティ
form要素の
暗黙的な
ARIAセマンティクスは、
form role
(アイテムと
オブジェクトの集合を含む
ランドマーク領域。
これらの要素は全体として
フォームを形成します。)
です。
<form>role
です。form role
は、アイテムとオブジェクトの集合を含むランドマーク領域です。これらの要素は全体としてフォームを形成します。
フォームには、ホスト言語のフォームコントロール、スクリプトコントロール、ハイパーリンクが混在する場合があります。 作成者は、可能な限り、ネイティブホスト言語のセマンティクスを使用してフォームコントロールを作成するようにしてください。 フォームの目的が検索条件の送信である場合、作成者は汎用フォームロールではなく検索ロールを使用するべきです。
作成者は、ロール form を持つ各要素に、フォームの目的を説明する簡潔なラベルを付与しなければなりません。 可視ラベルが存在する場合、作成者は aria-labelledby で可視ラベルを参照すべきです。 作成者は、可能な限り、見出し内にラベルを含めるべきです。 見出しは、標準ホスト言語の見出し要素のインスタンス、またはロール header を持つ要素のインスタンスであっても構いません。
作成者がスクリプトを用いて、本来は onsubmit イベントをトリガーしないユーザーアクション(例えば、ユーザーがフォーム要素の値を変更することでトリガーされるフォーム送信など)に基づいてフォームを送信する場合、作成者はその動作について事前にユーザーに通知するべきです。
ユーザーエージェントは、form の役割を持つ要素をナビゲーションランドマークとして扱うべきです。
作成者が<form>none
, presentation
, search
です。
ARIA の状態とプロパティについては、すべての要素で使用できるグローバルな`aria-*`
7.レンダリング
form {
display: block;
margin-block-end: 1em;
}
<form>block
であり、ブロック
<form>
フォーム関連要素を含むラッパーボックスとして<form>
<body>
<form action=
"../Html/fmreceive.htm"> <fieldset>
<label>
<input name="nipRadio" type="radio" value="Radio01" checked> Radio01</label> <label>
<input name="nipRadio" type="radio" value="Radio02"> Radio02</label> <button name=
"nbtSender" value= "../Html/spform.htm#MAP7NEXT"> ボタン</button> </fieldset>
</form>
</body>
<body>
<body>
<form>
尚、この説明は各要素のレンダリングに関する指定が既定値での話で、個々にスタイルを指定した場合はこの限りではありません。
コンテキスト
フォーマット
コンテキスト
<body>
<form action=
"../Html/fmreceive.htm"> <input name=
"nipInput" value= "abc"> <button name=
"nbtSender" value= "../Html/spform.htm"> ボタン</button> </form>
</body>
<body>
<body>
<form>
尚、この説明は各要素のレンダリングに関する指定が既定値での話で、個々にスタイルを指定した場合はこの限りではありません。
8.気を付ける点
フォームの送信
<form>
フォームの所有者
フォーム関連要素は、要素のフォーム所有者と呼ばれる<form>
この状況からして、<form>
名前
name