web-dev-qa-db-ja.com

HTMLチェックボックスのchecked属性に適切な値は何ですか?

私たちは皆、HTMLでチェックボックス入力を形成する方法を知っています。

<input name="checkbox_name" id="checkbox_id" type="checkbox">

わからないこと - チェックされたチェックボックスの技術的に正しい値は何ですか?私はこれらすべての仕事を見ました:

<input name="checkbox_name" id="checkbox_id" type="checkbox" checked>
    <input name="checkbox_name" id="checkbox_id" type="checkbox" checked="on">
    <input name="checkbox_name" id="checkbox_id" type="checkbox" checked="yes">
    <input name="checkbox_name" id="checkbox_id" type="checkbox" checked="checked">
    <input name="checkbox_name" id="checkbox_id" type="checkbox" checked="true">

それは問題ではないという答えですか? spec から、正しい here とマークされた答えに対する証拠は見当たりません。

チェックボックス(およびラジオボタン)は、ユーザーが切り替えることができるオン/オフスイッチです。制御要素のchecked属性が設定されているとき、スイッチは "on"です。フォームが送信されると、 "on"チェックボックスコントロールのみが成功する可能性があります。フォーム内の複数のチェックボックスが同じコントロール名を共有することがあります。したがって、たとえば、チェックボックスを使用すると、ユーザーは同じプロパティに対して複数の値を選択できます。 INPUT要素は、チェックボックスコントロールを作成するために使用されます。

スペックの作者は正しい答えは何だと思いますか?証拠に基づいた回答を提供してください。

403
buley

厳密に言えば、理にかなっているものを置くべきです - 仕様 ここに に従って、最も正しいバージョンは次のとおりです。

<input name=name id=id type=checkbox checked=checked>

HTMLの場合は、 空の属性構文checked=""、または単にcheckedを使用することもできます(より厳密なXHTMLでは、これは サポートされていません )。

しかし、事実上、ほとんどのブラウザは引用符の間のほぼすべての値をサポートします。以下のすべてがチェックされます。

<input name=name id=id type=checkbox checked>
<input name=name id=id type=checkbox checked="">
<input name=name id=id type=checkbox checked="yes">
<input name=name id=id type=checkbox checked="blue">
<input name=name id=id type=checkbox checked="false">

そして、以下だけがチェックされないでしょう:

<input name=name id=id type=checkbox>

disabled="disabled" についても同様の質問を参照してください。

429
Hannele

HTML5の仕様

http://www.w3.org/TR/html5/forms.html#attr-input-checked

Disabledコンテンツ属性はブール属性です。

http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes

要素上のブール属性の存在は真の値を表し、属性の不在は偽の値を表します。

属性が存在する場合、その値は空の文字列か、属性の正規名にASCII大文字と小文字を区別しないで一致する値である必要があります。先頭または末尾に空白はありません。

結論

以下は、 有効、等価、およびtrue です。

<input type="checkbox" checked />
<input type="checkbox" checked="" />
<input type="checkbox" checked="checked" />
<input type="checkbox" checked="ChEcKeD" />

以下は 無効 です。

<input type="checkbox" checked="0" />
<input type="checkbox" checked="1" />
<input type="checkbox" checked="false" />
<input type="checkbox" checked="true" />

属性の欠如は false の唯一の有効な構文です。

<input />

おすすめ

checked="checked"は無効なXHTML(ただし有効なHTML)であるため、<input checked>を使用する必要があります。そうでない場合は、短いので<input checked>を使用してください。

<input ... checked />
<input ... checked="checked" />

それらも同様に有効です。そしてJavaScriptでは:

input.checked = true;
input.setAttribute("checked");
input.setAttribute("checked","checked");
34

あなたはこれが欲しいと思う:checked='checked'

7
Johnny Craig
  1. チェック済み
  2. checked = ""
  3. checked = "チェック済み"

    同等です。


スペックに従って checkbox '---- = checked = "checked"または ""(空の文字列)またはempty要素が選択されたコントロールを表すことを指定します。

5
wengeezhang

Check falseにする唯一の方法は、値をすべて省略することです。 Angular 1.xを使用すると、これを実行できます。

  <input type="radio" ng-checked="false">

あなたがそれをチェックしないようにする必要があるならば、これはずっと正直です。

2
Alexander Mills