* input 要素 checked 属性 (HTML, XHTML 1)
[2] [ABBR[[[HTML]]][ハイパーテキスト・マーク付け言語]] の
[CODE(HTMLe)[[[input]]]] 要素の
[DFN[[CODE(HTMLa)[checked]] 属性]]は、
ボタンが[Q[入]]であることを示します。
この属性は [CODE(HTMLa)[[[type]]]] 属性が
[CODE(HTML)[[[checkbox]]]] または [CODE(HTML)[[[radio]]]]
の時使えます。
[3] 仕様書:
- [[HTML 4]]
-- [CODE(HTMLe)[input]] 要素 [CODE(HTMLa)[checked]] 属性
** 属性値
[1] この属性は[[真偽値属性]]です。指定すれば[[真]]
([Q[入]])、指定しなければ[[偽]] ([Q[切]]) です。
[4] 以前は、 [CODE(HTMLa)[type]] が [CODE(HTML)[radio]]
の時、同じ[[制御子名]]で [CODE(HTML)[checked]] な制御子が1つも無ければ、
最初のものが [CODE(HTML)[checked]] となるように規定されていましたが、
実装状況からその場合は未定義に変更されました。
詳しくは [CODE(HTML)[[[radio]]]] の説明をご覧ください。
[[#comment]]
** UA による利用
[5] UA は、 [CODE(HTMLa)[type]] が [CODE(HTML)[checkbox]] や
[CODE(HTML)[radio]] でないときには、この属性を無視しなければなりません。
[SRC[HTML 4 17.4]]
[[#comment]]
** メモ
[6] この属性とボタンの状態の関係については、 [CODE(HTML)[[[checkbox]]]]
や [CODE(HTML)[[[radio]]]] の説明もご覧ください。
[[#comment]]
* [CODE(DOMi)[HTMLInputElement]] 界面 [CODE(DOMa)[checked]] 属性 (DOM HTML)
[7] [ABBR[[[DOM]]][文書物体模型]] の
[CODE(DOMi)[[[HTMLInputElement]]]] 界面の
[DFN[[CODE(DOMa)[checked]]]] 属性は、
[ABBR[HTML][ハイパーテキスト・マーク付け言語]] の
[CODE(HTMLe)[[[input]]]] 要素によるラジオ・ボタン[[制御子]]またはチェック箱制御子の選択状態を表します。
[8] 仕様書:
- [[DOM水準1]]
-- [CODE(DOMi)[HTMLInputElement]] 界面 [CODE(DOMa)[checked]] 属性
- [[DOM水準2]]
-- [CODE(DOMi)[HTMLInputElement]] 界面 [CODE(DOMa)[checked]] 属性
- [[DOM水準3]]
-- [CITE[1.7.7.1 Activation and default actions]]
- [[Web Forms 2.0]]
-- [CITE[4.1. The [CODE(DOM)[click]] event and [CODE(HTMLe)[input]] controls]]
[[#comment]]
** 属性値
[9] この属性の型は [CODE(DOM)[[[boolean]]]] です。
[CODE(DOM)[[[true]]]] が選択されていることを、
[CODE(DOM)[[[false]]]] が選択されていないことを示します。
この属性の値は、 [CODE(HTMLa)[[[type]]]] が
[CODE(HTML)[[[radio]]]] または [CODE(HTML)[[[checkbox]]]]
の [CODE(HTMLe)[[[input]]]] 要素の場合、
その[[制御子]]の現在の選択状態を表します
[WEAK[(対話的利用者エージェントの場合)]]。
この属性を変更しても、 [ABBR[HTML][ハイパーテキスト・マーク付け言語]]
の [CODE(HTMLa)[checked]] 属性は変更されません。
[SRC[DOM 水準 1, 2]]
[10] [ABBR[DOM][文書物体模型]] の [CODE(DOMa)[checked]]
属性も、 [ABBR[HTML][ハイパーテキスト・マーク付け言語]] の
[CODE(HTMLa)[checked]] 属性も、関係のない [CODE(HTMLa)[type]]
の制御子である場合にどう扱われるのかは明確に規定されていません。
[[#comment]]
** 他との関係
[11] この属性は [ABBR[HTML][ハイパーテキスト・マーク付け言語]]
の [CODE(HTMLe)[[[input]]]] 要素の [CODE(HTMLa)[checked]]
属性に対応しますが、 [ABBR[HTML][ハイパーテキスト・マーク付け言語]] の
[CODE(HTMLa)[checked]] 属性と [ABBR[DOM][文書物体模型]]
の [CODE(DOMa)[checked]] 属性は切り離されています。
一方を変更しても、他方はもとのままです。
[[対話的利用者エージェント]]で[[利用者]]が選択状態を変更した時には、
[ABBR[DOM][文書物体模型]] の [CODE(DOMa)[checked]]
属性は変更されますが、 [ABBR[HTML][ハイパーテキスト・マーク付け言語]]
の [CODE(HTMLa)[checked]] 属性は変更されません。
それに対して、同じ [CODE(DOMi)[[[HTMLInputElement]]]]
界面で定義されている [CODE(DOMa)[[[defaultChecked]]]] 属性は、
[ABBR[HTML][ハイパーテキスト・マーク付け言語]] の
[CODE(HTMLa)[checked]] 属性と連動しています。
まとめると、 [CODE(HTMLa)[checked]] 属性関係の
[ABBR[DOM][文書物体模型]]の値は、
- 基本的に初期状態から変化しない値
-- [CODE[[VAR(DOMi)[HTMLInputElement]].[CODE(DOMa)[defaultChecked]]]]
-- [CODE[[VAR(DOMi)[HTMLInputElement]].[CODE(DOMm)[[[getAttributeNS]]]] ([CODE(DOM)[[[null]]]], '[CODE(HTMLa)[checked]]')]]
などで得られる[[属性節]]の値
- 選択の変化に連動する値
-- [CODE[[VAR(DOMi)[HTMLInputElement]].[CODE(DOMa)[checked]]]]
-- [ABBR[[[UA]]][利用者エージェント]] で[[レンダリング]]される値
の2種類に分けられます。
[[#comment]]
*** 事象発生の時機
[13] 普通[[視覚UA]] はラジオ・
ボタン制御子やチェック箱制御子が[[かちっ]]されると選択状態を変更しますが、
その際に、 [CODE(DOM)[[[click]]]] 事象が発生する前に
[CODE(DOMa)[checked]] を変えるか、後に変えるかという問題があります。
事象の取消しのことを考えると後から変える方が適当に思えるかもしれませんが、
前者なら文章入力制御子における [CODE(DOM)[[[change]]]] 事象
[WEAK[(変更が終わった後に発生)]] と [CODE(DOMa)[[[value]]]]
属性の関係に近くなりますから、一概に悪いとも言えません。
[12] [CITE[DOM 水準 2 HTML]] は、次のように述べています。
> [CODE(HTMLa)[type]] 属性の値が [CODE(HTML)[radio]] か
[CODE(HTML)[checkbox]] の [CODE(HTMLe)[input]]
要素での[[かちっ]]事象の扱いに関して、
実装によってはこの特性 [INS[([CODE(DOMa)[checked]] 属性)]]
が、事象が文書に発射する前に変更されるかもしれません。
事象の[[既定動作]]が取消されたら、特性は元の値に戻されるかもしれません。
つまり、かちっ事象を扱う間のこの特性の値は実装依存ということです。
[14] [CITE[DOM 水準 3 事象]] の 1.7.7.1 には、
次のように書かれています。
> 実装は、事象を発射する前にこれに反応し、
表示および DOM 木に変更を行うことができます。
そのような場合、 DOM 属性が事象の発される以前に変更されたなら、
その[[装置事象型]]を取消すとその変更も戻されることとなります。
その良い例が
[CODE[[VAR(DOMi)[[[HTMLInputElement]]]].[CODE(DOMa)[checked]]]]
属性です。 DOM 水準 2 HTML で説明されているように、
この特性の値は事象の発射の前に変更して構いません。
利用者がラジオ・ボタンを[[かちっ]]すると、
ラジオ・ボタンは表示上チェックされ (またはチェックがはずされ)、
[CODE(DOM)[[VAR(DOMi)[HTMLInputElement]].[CODE(DOMa)[checked]]]]
属性も同じように変更され、それから装置事象型
[CODE(DOM)[{, [CODE(DOM)[[[click]]]]}]]
が発射されます。この装置事象型の[[既定動作]]が取消されれば、あるいは
[CODE(DOM)[{, [CODE(DOM)[[[DOMActivate]]]]}]]
事象型に付された既定動作が取り消されれば、
[CODE(DOM)[[VAR(DOMi)[HTMLInputElement]].[CODE(DOMa)[checked]]]]
特性は元の値に戻す必要があります。
[15] [[Web Forms 2.0]] の2004年12月10日の原案には、
次のように書かれています。
> [CODE(HTMLa)[type]] 属性の値が [CODE(HTML)[radio]] または
[CODE(HTML)[checkbox]] の [CODE(HTMLe)[input]] 要素で
[CODE(DOM)[click]] 事象を扱う際は、利用者エージェントは、
事象を文書に発射する前に影響を受ける要素の
[CODE(DOMa)[checked]] 特性の値を変更しなければなりません。
この場合の [CODE(DOM)[click]] 事象の既定動作は
[CODE(DOM)[DOMActivate]] 事象を発することであり、
[CODE(DOM)[DOMActivate]] 事象の既定動作は
([[活性化]]が値を変更するとして) [CODE(DOM)[[[change]]]]
事象を発することです。これらの事象のいずれかの既定動作が取消されたなら、
変更された特性の値は元の値に戻されます。
> これは、この動作が任意選択であった DOM 2 HTML
からの変更です。
[[#comment]]
** メモ
[[#comment]]
*メモ