html - disabled - input type checkbox jquery




HTML複選框的checked屬性的值是多少? (5)

  1. 檢查
  2. 檢查=“”
  3. 檢查=“選中”

    是等同的;

根據規格w3.org/TR/html-markup/input.checkbox.html '----ⓘchecked =“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本身看到沒有證據表明答案標記為正確:

複選框(和單選按鈕)是可以由用戶切換的開/關開關。 當控制元素的checked屬性被設置時,開關處於“on”狀態。 提交表單時,只有“開啟”複選框控件才能成功。 表單中的多個複選框可能共享相同的控件名稱。 因此,例如,複選框允許用戶為同一個屬性選擇多個值。 INPUT元素用於創建複選框控件。

規格作者會說什麼是正確的答案? 請提供基於證據的答案。


HTML5規範

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

禁用的內容屬性是布爾屬性。

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

元素上布爾屬性的存在表示真值,缺少屬性表示假值。

如果該屬性存在,則其值必須是空字符串,或者是該屬性規範名稱的ASCII不區分大小寫匹配的值,且不含前導或尾隨空格。

結論

以下是有效的,等同的和真實的

<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 />

建議

如果您關心編寫有效的XHTML,請使用checked="checked" ,因為<input checked>無效XHTML(但有效的HTML)和其他替代方法的可讀性較差。 否則,只需使用<input checked>因為它更短。


嚴格地說,你應該把有意義的東西 - 根據here的規格,最正確的版本是:

<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"類似問題。


這是一個非常瘋狂的城鎮,唯一的方法來檢查虛假是省略任何值。 使用Angular 1.x,你可以這樣做:

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

如果你需要不加限制的話,這會更加理智。


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

這些同樣有效。 在JavaScript中:

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




html-input