2012-05-31 20 views
33

我已經看到了三種預先選擇複選框的實現。我開始使用checked =「checked」,因爲我認爲這是「正確的」方式(但是從來沒有像「checked」=「yes」那樣)。我正在考慮更改爲checked =「true」,因爲它看起來更具可讀性,並且更容易編寫JavaScript代碼。請注意,同樣的問題也適用於其他屬性,例如「disabled」=「disabled」與「disabled」=「true」。只要我一致,是用「真實」的首選方法?謝謝輸入複選框爲真或選中或是

<input type="checkbox" checked="checked" value="123" name="howdy" /> 
<input type="checkbox" checked="true" value="123" name="howdy" /> 
<input type="checkbox" checked="yes"  value="123" name="howdy" /> 
+0

作爲警告什麼$( '輸入[名稱= FOO]')。 attr('checked',true);?它應該真的是$('input [name = foo]')。attr('checked','checked')? – user1032531

回答

55

只有checkedchecked="checked"是有效的。您的其他選項取決於瀏覽器中的錯誤恢復。

checked="yes"checked="true"因爲他們暗示checked="no"checked="false"將設置默認狀態是選中 ......他們不會是特別糟糕。

+4

[HTML 5規範](http://www.whatwg.org/specs/web-apps/current-work/multipage/common-microsyntaxes.html#boolean-attribute)。 –

+0

對不起,在這裏添加它... $('input [name = foo]')。attr('checked',true);?它應該真的是$('input [name = foo]')。attr('checked','checked')? – user1032531

+0

它應該是'jQuery(選擇器).prop('checked',true);'(attr'關於如何處理checked屬性不一致,所以應該避免爲了維護者的大腦)。 – Quentin

3

根據W3C檢查輸入的屬性可以不存在/ ommited或「檢查」爲其值。這不會使其他值無效,因爲對瀏覽器實現沒有限制,以允許諸如「true」,「on」,「yes」等等的值。爲了確保您能夠按照W3C的建議,編寫跨瀏覽器複選框/收音機使用checked =「checked」。

禁用,只讀和ismap輸入的屬性以相同的方式。

EDITED

空不託運,殘疾人,只讀和ISMAP輸入的屬性的有效值,由@Quentin

+0

不。它說檢查的屬性可以省略,或者它可以具有「檢查」的值。這會使每一個其他值無效(HTML只允許你使用允許的東西,它不允許你使用所有不被禁止的東西)。由於它是一個布爾屬性,因此可以省略所有內容,除了具有該屬性的值之外。即給定'checked =「checked」'你可以提交前9個字符和最後一個字符)。 – Quentin

+0

我說這不會使其他值的原因無效**瀏覽器**可以實現他們想要解析html的方式,因爲他們接受一個ommited /缺少checked屬性或者checked =「checked」爲W3C推薦的** 。我接受否定的'casue'空'不是有效的價值,但其他一切仍然適用。 –

相關問題