

* [CODE(HTMLa)@en[required]] 属性 (HTML)

[1] [[HTML]] の[[フォーム制御子]]の
[DFN[[CODE(HTMLa)@en[required]] [[属性]]]]は、
[[フォーム]]を[[提出]]する前に[[値]]がその[[フォーム制御子]]に入力されなければならないことを示します。

[2]
:状態:[[WHATWG]] [[WD]]
:[[要素型]]:[[フォーム制御子]]
:[[属性名]]:[CODE(HTMLa)@en[[[required]]]]
:[[属性値]]:([[ブール型属性]] >>12)
:[[既定値]]:([[偽]] >>12)

[3]
仕様書:
- [[Web Forms 2.0]]
-- [CSECTION@en[2.7. The [CODE(HTMLa)@en[[[required]]]] attribute]]
<IW:WF2:"#the-required">
-- [CSECTION@en[2.15. Extensions to file upload controls]]
<IW:WF2:"#upload">
-- <http://www.whatwg.org/specs/web-forms/current-work/#relation>

** 属性値

[12]
@@

** 提出

[4]
[[利用者]]は、[[フォーム]]を[[提出]]する前に、
[CODE(HTMLa)@en[[[required]]]] とされた[[フォーム制御子]]に値を入力[['''しなければなりません''']]。
[SRC@en[WF2 2.7]]

[5]
[CODE(HTMLa)@en[[[required]]]] [[属性]]は、
次の条件に1つも該当''しない''[[フォーム制御子]]に適用されます
[SRC@en[WF2 2.7]]。
- [CODE(HTML)@en[[[hidden]]]]
- [CODE(HTML)@en[[[image]]]]
- [[ボタン]] ([CODE(HTML)@en[[[submit]]]],
[CODE(HTML)@en[[[move-up]]]] など)
- [CODE(HTMLe)@en[[[select]]]]
- [CODE(HTMLe)@en[[[output]]]]
- [CODE(HTMLa)@en[[[disabled]]]]
- [CODE(HTMLa)@en[[[readonly]]]]

[6]
[CODE(HTMLa)@en[[[required]]]] で、
値を持たない[[フォーム制御子]]には、
[[旗]] [CODE(DOM)@en[[[valueMissing]]]] が使われます。
[SRC@en[WF2 2.7]]

[7]
[CODE(HTML)@en[[[checkbox]]]] では、
その[[フォーム]]中の同じ [CODE(HTMLa)@en[[[name]]]] の1つ以上の
[CODE(HTML)@en[[[checkbox]]]]
が[[チェック]]されていなければならないことを表します。
[SRC@en[WF2 2.7]]

[8] 
[CODE(HTML)@en[[[radio]]]] では、
その[[ラジオ群]]内の丁度1つが[[チェック]]されていなければならないことを表します。
[SRC@en[WF2 2.7]]

[9]
[CODE(HTML)@en[[[file]]]] では、
([CODE(HTMLa)@en[[[min]]]] や [CODE(HTMLa)@en[[[max]]]]
にかかわらず)
最低1つの[[妥当]]な
([[提出]]時に実際に[[うp]]され得る)
[[ファイル]]が選択されていなければならないことを表します。
[SRC@en[WF2 2.7, 2.15]]

[10]
それ以外の種類の[[フォーム制御子]]では、
[WEAK[[[空白]]も含め]]何らかの値が与えられていなければならないことを表します。
[SRC@en[WF2 2.7]]

[[#comment]]


** 歴史

[13] この[[属性]]は [[Web Forms 2.0]]
で導入されました。

[[#comment]]


** 例

[11] 
[PRE(HTML example code)[
<ul>
  <li><label> Name: <input type="text" name="name" required="required" /></label></li>
  <li><label> Comment: <input type="text" name="comment" /></label></li>
</ul>
]PRE]

この例では、[[利用者]]は名前を入力しなければなりませんが、
注釈は空でも構いません。[[利用者エージェント]]は、
名前が入力されるまでは[[提出]]を認めてはいけません。
[SRC@en[WF2 2.7]]

[[#comment]]


** メモ

[14]
[CITE[A List Apart: Articles: Validating a Custom DTD]] ([CODE[2007-08-17 23:05:01 +09:00]] 版) <http://www.alistapart.com/articles/customdtd/>
([[名無しさん]])

[15]
[CITE@en['''['''WF2''']''' backwards compatibility with values of custom required  attributes]] ([[Hallvord R. M. Steen]] 著, [CODE[2008-01-16 22:04:01 +09:00]] 版) <http://lists.w3.org/Archives/Public/public-html/2008Jan/0143.html>


[16] [CITE['''['''whatwg''']''' Form validation against invisible controls]]
([TIME[2010-06-14 23:46:28 +09:00]] 版)
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2010-June/026733.html>

[17] [CITE['''['''whatwg''']''' Form validation against invisible controls]]
([TIME[2010-06-14 23:46:39 +09:00]] 版)
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2010-June/026734.html>

[18] [CITE['''['''whatwg''']''' Form validation against invisible controls]]
([TIME[2010-08-05 08:43:01 +09:00]] 版)
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2010-August/027624.html>

[19] [CITE@en[HTML5 Revision Tracker]]
([TIME[2010-08-12 07:41:23 +09:00]] 版)
<http://html5.org/tools/web-apps-tracker?from=5282&to=5283>

[20] [CITE['''['''whatwg''']''' Constraint validation feedback (various threads)]]
([TIME[2010-08-12 07:41:12 +09:00]] 版)
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2010-August/027882.html>

[21] [CITE['''['''whatwg''']''' Constraint validation feedback (various threads)]]
([TIME[2010-11-21 07:06:58 +09:00]] 版)
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2010-November/029044.html>

[22] [CITE[IRC logs: freenode / #whatwg / 20110505]]
( ([TIME[2011-05-07 13:59:30 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20110505>

[23] [CITE[''''''[''''''whatwg'''''']'''''' Make radio button group suffering from being missing]]
( ([TIME[2011-06-10 00:10:29 +09:00]] 版))
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2011-June/031970.html>

* [CODE(CSS)@en[:required]] 擬似クラス、[CODE(CSS)@en[:optional]] 擬似クラス

** 仕様書

[REFS[
- [37] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2011-11-12 00:22:26 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#pseudo-classes>
- [24] [CITE@EN[XForms 1.1]] ([TIME[2010-08-13 07:45:33 +09:00]] 版) <http://www.w3.org/TR/xforms/#N90079>
]REFS]

** 意味

*** HTML

[40] [[HTML]] については [CODE(CSS)@en[[[:required]]]] と [CODE(CSS)@en[[[:optional]]]] は次の[[要素]]にそれぞれ適用されます
[SRC[>>37]]。
- [41] [CODE(HTMLe)@en[[[input]]]] [[要素]]について、
-- [[必須]]であれば [CODE(CSS)@en[[[:required]]]]
-- [CODE(HTMLa)@en[[[required]]]] [[属性]]が適用されるけど[[必須]]でないなら [CODE(CSS)@en[[[:optional]]]]
- [42] [CODE(HTMLe)@en[[[select]]]] [[要素]]について、 [CODE(HTMLa)@en[[[required]]]] [[属性]]がある、またはない
- [43] [CODE(HTMLe)@en[[[textarea]]]] [[要素]]について、 [CODE(HTMLa)@en[[[required]]]] [[属性]]がある、またはない

*** XForms

[25] [[XForms]] では [CODE(CSS)@en[[[:required]]]] と [CODE(CSS)@en[[[:optional]]]]
はそれぞれ [CODE(XML)@en[[[required]]]] [[モデル項目特性]]が[[真]]と[[偽]]に評価される[[節点]]に[[束縛]]された[[フォーム制御子]]を表します。

** 歴史

*** CSS UI

[REFS[
- [26] [CITE@en[CSS3 module: Basic User Interface]] ([[Tantek Çelik]] 著, [TIME[2002-08-03 07:13:43 +09:00]] 版) <http://www.w3.org/TR/2002/WD-css3-ui-20020802/#pseudo-required-value>
- [30] [CITE[XForms and Styling]] ([TIME[2002-08-21 23:00:56 +09:00]] 版) <http://www.w3.org/TR/2002/WD-xforms-20020821/sliceF.html#id2641029>
- [32] [CITE[XForms and Styling]] ([TIME[2002-11-07 01:02:54 +09:00]] 版) <http://www.w3.org/TR/2002/CR-xforms-20021112/sliceF.html#id2641627>
- [28] [CITE@en[CSS Basic User Interface Module Level 3 (CSS3 UI)]] ([[Tantek Çelik]] 著, [TIME[2011-09-29 17:32:08 +09:00]] 版) <http://dev.w3.org/csswg/css3-ui/#pseudo-required-value>
- [27] [CITE@EN[XForms 1.1]] ([TIME[2010-08-13 07:45:33 +09:00]] 版) <http://www.w3.org/TR/xforms/#N90079>
- [44] [CITE@en[CSS Basic User Interface Module Level 3 (CSS3 UI)]] ([[Tantek Çelik]] 著, [TIME[2012-01-13 20:03:30 +09:00]] 版) <http://www.w3.org/TR/2012/WD-css3-ui-20120117/#pseudo-required-value>
]REFS]

[29] [[XForms]] での利用を想定して >>26 で追加されました。

[31] >>30 では [DFN[[CODE(CSS)@en[[[:forms-required]]]]]], [DFN[[CODE(CSS)@en[[[:forms-optional]]]]]]
という名前になっていました。
>>32 以降では [[CSS]] と同じ名前になっています。

[35] [[Webアプリケーション]]から制御可能にする構想もありました。

[REFS[
- [34] [CITE@en-GB-hixie[Web Applications Markup Language 1.0]]
( ([TIME[2004-04-08 02:39:12 +09:00]] 版))
<http://hixie.ch/specs/html/apps/web-apps-1#pseudo-classes>
- [33] [CITE@en-GB-hixie[Web Controls 1.0]]
( ([TIME[2004-11-09 08:49:52 +09:00]] 版))
<http://www.whatwg.org/specs/web-controls/current-work/#pseudo-classes>
]REFS]

** HTML

[39] [[HTML]] に関してははじめ [[Web Forms 2.0]] が、その後 [[Web Applications 1.0]]
が規定しています。

[REFS[
- [38] [CITE@en-GB-x-Hixie[Web Forms 2.0]] ([TIME[2009-01-05 11:07:15 +09:00]] 版) <http://www.whatwg.org/specs/web-forms/current-work/#relation>
- [36] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2011-11-12 00:22:26 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#pseudo-classes>
]REFS]


[45] ( ([TIME[2012-11-07 01:04:06 +09:00]] 版))
<https://bug-44436-attachments.webkit.org/attachment.cgi?id=168646>

[46] [CITE[IRC logs: freenode / #whatwg / 20121015]]
( ([TIME[2012-10-27 16:12:54 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20121015#l-777>

[47] [CITE@en[Re: Removing the concept of "optional any"]]
( ([[Boris Zbarsky]] 著, [TIME[2014-02-20 02:01:43 +09:00]] 版))
<http://lists.w3.org/Archives/Public/public-script-coord/2014JanMar/0172.html>

[48] [CITE@en[Web Applications 1.0 r2778 Defined how pseudo-classes match HTML concepts. Redid how rtl/ltr changes are marked. Stopped <legend> centering for <figure>. Removed <multicol> support. Removed <basefont> support. Removed obsolete notes. Fixed minor typos.]]
( ([TIME[2009-02-11 16:36:00 +09:00]] 版))
<http://html5.org/r/2778>

[49] [CITE@en[Merge pull request #17 from bzbarsky/required-dictionary-entry · c484996 · heycam/webidl]]
( ([TIME[2014-09-09 15:32:59 +09:00]] 版))
<https://github.com/heycam/webidl/commit/c48499697008a47a068edd912a54ac38489e3ddd>

[50] [CITE@en[Use of "required" dictionary attributes for events]]
( ([[Boris Zbarsky]] 著, [TIME[2014-09-09 23:17:40 +09:00]] 版))
<http://lists.w3.org/Archives/Public/public-script-coord/2014JulSep/0268.html>

[51] [CITE@en[Bug 26562 – The IDL for createImageBitmap seems to be wrong]]
( ([TIME[2014-09-18 09:58:57 +09:00]] 版))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=26562>

[52] [CITE@en-US[csswg: changeset 14966:d176479b88ff]]
( ([TIME[2014-12-25 13:51:30 +09:00]] 版))
<https://dvcs.w3.org/hg/csswg/rev/d176479b88ffe2dcfa027be6aee807afc0d45bd2>

[FIG(quote)[
[FIGCAPTION[
[53] [CITE@ja[ブラウザ JavaScript]]
([TIME[2015-03-14 20:54:54 +09:00]] 版)
<http://www.opera.com/docs/browserjs/>
]FIGCAPTION]

> 
> WebForms2 において要求された要素が false 値をとらない問題 - フォーム要素から "required=false" を削除

]FIG]


[54] [CITE@en[Make the non-normative "suffering from being missing" vaguer (#1797)]]
([[domenic]]著, [TIME[2016-09-20 01:28:21 +09:00]])
<https://github.com/whatwg/html/commit/24fb7d484247451368648dac44d291ecb071f46d>

[55] [CITE@en[Escape IDL attributes named 'required' by csnardi · Pull Request #3721 · whatwg/html]]
([TIME[2018-06-04 18:51:01 +09:00]])
<https://github.com/whatwg/html/pull/3721>