

* フォーム制御子系要素 readonly 属性 (HTML, XHTML 1)

[2] [[HTML]] のフォーム[[制御子]]系要素の
[DFN[[CODE(HTMLa)[readonly]] 属性]]は、
その制御子の変更を禁じます。

[10]
:状態:[[W3C]] [[勧告]]、 [[WHATWG]] [[WD]]
:[[要素型]]:
[CODE(HTMLe)@en[[QN[[[input]]] [http://www.w3.org/1999/xhtml]]]],
[CODE(HTMLe)@en[[QN[[[textarea]]] [http://www.w3.org/1999/xhtml]]]]
:[CODE(DOMa)@en[[[type]]]]:
[CODE(HTML)@en[[[text]]]],
[CODE(HTML)@en[[[password]]]],
[CODE(HTML)@en[[[email]]]],
[CODE(HTML)@en[[[url]]]],
[CODE(HTML)@en[[[date]]]],
[CODE(HTML)@en[[[datetime]]]],
[CODE(HTML)@en[[[datetime-local]]]],
[CODE(HTML)@en[[[month]]]],
[CODE(HTML)@en[[[week]]]],
[CODE(HTML)@en[[[time]]]],
[CODE(HTML)@en[[[number]]]],
[CODE(HTMLe)@en[[[textarea]]]]
:[[属性名]]:[CODE(HTMLa)@en[[[readonly]]]]
([Q@en[read‐only]] ([Q[読取専用]]) より)
:[[属性値]]:[[ブール型属性]] (>>4)
:[[既定値]]:[[偽]] (>>4)

[3] 仕様書:
- [[HTML 4]] ([[Web Forms 1.0]])
-- [CITE[17.12.2 Read-only controls]]
<IW:HTML4:"interact/forms.html#read-only">
- [[Web Forms 2.0]]
-- [CSECTION@en[2.5. Extensions to existing attributes]]
<IW:WF2:"#extensions0">
-- <http://www.whatwg.org/specs/web-forms/current-work/#relation>

** 属性値

[4] この属性は[[真偽値属性]]です。指定すれば真 (読取専用)、
省略すれば偽 (読書可能) です。

[9]
HTML 4 DTD の[[注釈]] (参考) には
[Q[for text and passwd]]
と説明があります。

[[#comment]]


** UA による利用

[5] 読取専用の要素は、
- [[焦点]]を受取ります。 [SRC[HTML 4 17.12.2]]
- [[利用者]]が編集することはできません。[SRC[HTML 4 17.12.2]]
- タブ navigation ([CODE(HTMLa)[[[tabindex]]]] を参照。) に含まれます。
[SRC[HTML 4 17.12.2]]
- [[成功]]し得ます。 [SRC[HTML 4 17.12.2]]
- [[レンダリング]]は UA 依存です。 [SRC[HTML 4 17.12.2]]

[[#comment]]


** アクセス可能性・可用性・安全性

[8] この属性は HTML 的手段で動的に編集できません (>>6) から、
アクセス可能性に関して [CODE(HTMLa)[[[disabled]]]]
属性と同じ問題を抱えています。

** 歴史

[11] 
[[HTML 4]] では [CODE(HTMLa)@en[[[type]]]]
に関する規定はありませんでしたが、
[[Web Forms 2.0]] は適用対象を明記しています。
[[ボタン]]系の [[widget]] には[[読取専用]]の概念はありません
[SRC@en[WF2 2.5]]。

** 関連

[6] 制御子が読取専用であるかどうかを、 HTML 的に動的に編集する方法はありません。
動的に変更する場合は[[スクリプト]]を使うことになります。 [SRC[HTML 4 17.12.2]]

[7] 似た属性として、 [CODE(HTMLa)[[[disabled]]]] があります。
こちらは成功しないなどより強い制約を受けます。
[CODE(HTMLa)[disabled]] は [CODE(HTMLe)[select]] などより多くの要素に指定できます。

** メモ

[1] [WEAK[2004-03-06 11:53:47 +00:00]] ''[[名無しさん]]'': 
[CITE[Request clarification: Does readonly apply to checkboxes and radio buttons? from Robin Lionheart on 2004-02-19 (www-html@w3.org from February 2004)]] 
<http://lists.w3.org/Archives/Public/www-html/2004Feb/0100.html>

[14] [CITE['''['''whatwg''']''' Can we make checkboxes readonly?]]
([TIME[2011-04-07 15:12:01 +09:00]] 版)
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2011-April/031137.html>

* [CODE(CSS)@en[:read-only]] 擬似クラス、 [CODE(CSS)@en[:read-write]] 擬似クラス

** 仕様書

[REFS[
- [26] [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>
- [15] [CITE@EN[XForms 1.1]] ([TIME[2010-08-13 07:45:33 +09:00]] 版) <http://www.w3.org/TR/xforms/#N90079>
]REFS]

** 意味

*** HTML

[30] [CODE(CSS)@en[[[:read-write]]]] は次の[[要素]]に[[一致]]しなければ[['''なりません''']] [SRC[>>26]]。
- [31] [CODE(HTMLe)@en[[[input]]]] [[要素]]であって [CODE(HTMLa)@en[[[readonly]]]] [[属性]]が適用されるもので、
[[変異不能]]であるもの
-- つまり [CODE(HTMLa)@en[[[readonly]]]] [[属性]]を持たず、[[無効]]でもないもの
- [32] [CODE(HTMLe)@en[[[textarea]]]] [[要素]]であって [CODE(HTMLa)@en[[[readonly]]]] [[属性]]を持たず、
[[無効]]でないもの
- [33] [[編集ホスト]]または[[編集可能]]である[[要素]]で [CODE(HTMLe)@en[[[input]]]] でも
[CODE(HTMLe)@en[[[textarea]]]] でもないもの

[34] [CODE(CSS)@en[[[:read-only]]]] はそれ以外のすべての[[HTML要素]]に[[一致]]しなければ[['''なりません''']]
[SRC[>>26]]。

*** XForms

[16] [[XForms]] では [CODE(CSS)@en[[[:read-only]]]] と [CODE(CSS)@en[[[:read-write]]]] はそれぞれ
[CODE(XML)@en[[[readonly]]]] [[モデル項目特性]]が[[真]]と[[偽]]の[[節点]]に[[束縛]]された[[フォーム制御子]]を表します。

** 歴史

*** CSS UI

[REFS[
- [19] [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-ro-rw>
- [21] [CITE[XForms and Styling]] ([TIME[2003-07-29 05:06:55 +09:00]] 版) <http://www.w3.org/TR/2003/PR-xforms-20030801/sliceF.html#id2644787>
- [18] [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-ro-rw>
- [17] [CITE@EN[XForms 1.1]] ([TIME[2010-08-13 07:45:33 +09:00]] 版) <http://www.w3.org/TR/xforms/#N90079>
- [35] [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-ro-rw>
]REFS]

[20] [[XForms]] での利用を想定して >>19 で追加されました。

[22] [[XForms]] には >>21 で追加されました。

*** Web Controls 1.0

[REFS[
- [25] [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>
- [23] [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]

[24] [CODE(CSS)@en[[[:read-only]]]], [CODE(CSS)@en[[[:read-write]]]],
[DFN[[CODE(CSS)@en[[[:write-only]]]]]] を[[Webアプリケーション]]から自由に設定できるようにする構想がありました。

*** HTML

[29] [[HTML]] についてははじめ [[Web Forms 2.0]] が、後に [[Web Applications 1.0]]
が規定しています。

[REFS[
- [28] [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>
- [27] [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]


[36] [CITE[''''''[''''''whatwg'''''']'''''' Can we make checkboxes readonly?]]
( ([TIME[2012-05-03 10:37:14 +09:00]] 版))
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2012-May/035646.html>

[37] [CITE@en[Web Applications 1.0 r7365 Clarify things around readonly='', add more variety to the way boolean attributes are used in examples.]]
( ([TIME[2012-09-17 15:47:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7364&to=7365>

[38] [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>

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

[12] [CITE@en[Re: '''['''css-ui''']''''''['''selectors''']''' Definition of :read-only]]
( ([[Chris Rebert]]著, [TIME[2016-05-08 15:11:42 +09:00]]))
<https://lists.w3.org/Archives/Public/www-style/2016May/0070.html>

[13] [CITE@en[17812 – :read-write should always apply to input elements if @readonly doesn't apply]]
( ([TIME[2016-05-09 10:34:01 +09:00]]))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=17812>

[40] [CITE@en['''['''css-ui''']''''''['''selectors''']''' Definition of :read-only]]
( ([[Simon Pieters]]著, [TIME[2016-04-19 16:58:33 +09:00]]))
<https://lists.w3.org/Archives/Public/www-style/2016Apr/0294.html>

[41] [CITE@en[Issue 255351 - chromium - :read-write pseudo-class isn't applied on <input type="text" disabled> - Monorail]]
( ([TIME[2016-05-09 10:36:00 +09:00]]))
<https://bugs.chromium.org/p/chromium/issues/detail?id=255351>