這背後的根本原因是,這是一個後來除了HTML輸入字段,並且是這個樣子,以保持與現有的網頁向後兼容性需要。
當<input>
標籤最初被定義時,其功能非常有限。它沒有disabled
或readonly
屬性,也沒有我們今天認爲理所當然的許多其他屬性。
這些都是後來添加的,但是當它們被添加時,許多網站已經在使用<input>
字段,所以禁用它的能力必須在不影響現有代碼的情況下才能使用。因此默認狀態必須是enabled
。
它也必須是布爾標誌,這就是爲什麼它是disabled
而不是enabled=true
。後者將是一個鍵值對屬性。這不是一個好的選擇。
考慮以下幾點:
enabled=false
enabled=0
enabled=FALSE
enabled=no
enabled=disabled
enabled=flase
etc...
瀏覽器將不得不能夠應付可能值的數量巨大。使它成爲一個布爾標誌極大地簡化了事情。它使規格更容易理解,無論是網站開發人員還是瀏覽器開發人員。
另一件需要記住的是,這個屬性被添加到HTML的時間是在所謂的「瀏覽器戰爭」中。許多功能被添加到競爭的網頁瀏覽器中,匆忙併且沒有正式規格的好處,並且添加了許多功能,我們可以真正回顧並希望它稍有不同。
我不相信這是這些功能之一:disabled
標誌是完全合乎邏輯真的,如果你停下來想一想。但是如果瀏覽器開發人員在當時合作得更多一些,它可能會更好地設計出來。
但無論如何,今天的情況是,這就是我們所擁有的。 HTML規範可能正在發展,但現有的功能現在不會改變。
也許吧,但W3C這樣做了,在這裏抱怨不會改變它。 – alex