HTML複選框的checked屬性的正確值是什麼?

咱們都知道如何在HTML中造成一個複選框輸入: html

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

我不知道 - 複選複選框的技術正確值是什麼? 我看到這些都有效: html5

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

答案是可有可無的嗎? 我看到的答案,沒有證據標記爲正確這裏規範自己: ide

複選框(和單選按鈕)是可由用戶切換的開/關開關。 當設置了控制元素的checked屬性時,開關處於「打開」狀態。 提交表單時,只有「on」複選框控件才能成功。 表單中的多個複選框能夠共享相同的控件名稱。 所以,例如,複選框容許用戶爲同一屬性選擇多個值。 INPUT元素用於建立複選框控件。 spa

規範做者會說什麼是正確答案? 請提供基於證據的答案。 .net


#1樓

  1. 檢查
  2. 檢查=「」
  3. 檢查=「選中」 code

    是等價的; orm


根據spec 複選框 '----ⓘchecked =「checked」或「」(空字符串)或空指定元素表示選定的控件.---' htm


#2樓

HTML5規範ip

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

disabled content屬性是布爾屬性。

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

元素上存在布爾屬性表示真值,缺乏屬性表示false值。

若是該屬性存在,則其值必須是空字符串,或者是屬性的規範名稱的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>由於它更短。


#3樓

這是一個很是瘋狂的城鎮,惟一的方法是檢查錯誤是省略任何值。 使用Angular 1.x,您能夠這樣作:

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

若是你須要不加以控制,那就更加理智了。


#4樓

我認爲這可能會有所幫助:


首先閱讀Microsoft和W3.org的全部規範。
您會看到設置複選框的實際元素須要在ELEMENT PROPERTY上完成,而不是UI或屬性。
$('mycheckbox')[0].checked

其次,你須要知道checked屬性RETURNS一個字符串「true」,「false」
爲何這很重要? 由於您須要使用正確的類型。 字符串,不是布爾值。 解析複選框時這也很重要。
$('mycheckbox')[0].checked = "true"

if($('mycheckbox')[0].checked === "true"){ //do something }

您還須要意識到「已檢查」ATTRIBUTE最初用於設置複選框的值。 一旦元素呈現給DOM,這不會作太多。 在網頁加載並最初解析時,將其設置爲有效。
我將使用IE的首選項: <input type="checkbox" checked="checked"/>

最後,複選框混淆的主要方面是複選框UI元素與元素的屬性值不一樣。 它們不直接相關。 若是你在.net中工做,你會發現用戶「檢查」一個複選框永遠不會反映傳遞給控制器​​的實際bool值。 要設置UI,我同時使用$('mycheckbox').val(true);$('mycheckbox').attr('checked', 'checked');


簡而言之,對於選中的複選框,您須要:
初始DOM: <input type="checkbox" checked="checked">
元素屬性: $('mycheckbox')[0].checked = "true";
UI: $('mycheckbox').val(true);$('mycheckbox').attr('checked', 'checked');


#5樓

你想要這個我認爲: checked='checked'

相關文章
相關標籤/搜索