咱們都知道如何在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
檢查=「選中」 code
是等價的; orm
根據spec 複選框 '----ⓘchecked =「checked」或「」(空字符串)或空指定元素表示選定的控件.---' htm
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>
由於它更短。
這是一個很是瘋狂的城鎮,惟一的方法是檢查錯誤是省略任何值。 使用Angular 1.x,您能夠這樣作:
<input type="radio" ng-checked="false">
若是你須要不加以控制,那就更加理智了。
我認爲這可能會有所幫助:
$('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');
<input type="checkbox" checked="checked">
$('mycheckbox')[0].checked = "true";
$('mycheckbox').val(true);
和
$('mycheckbox').attr('checked', 'checked');
你想要這個我認爲: checked='checked'