La ragione fondamentale di questo è che si trattava di una successiva aggiunta ai campi di input HTML, e aveva bisogno di essere in questo modo per mantenere la compatibilità con le pagine web esistenti.
Quando il tag <input>
è stato originariamente definito, la sua funzionalità era estremamente limitata. Non disponeva degli attributi disabled
o readonly
, né di molte altre proprietà che oggi diamo per scontate.
Questi sono stati aggiunti in seguito, ma quando sono stati aggiunti, molti siti Web utilizzavano già i campi <input>
, quindi la possibilità di disattivarlo ha dovuto funzionare senza influire sul codice esistente che non lo utilizzava. Pertanto lo stato predefinito doveva essere enabled
.
Doveva anche essere una bandiera booleana, motivo per cui è disabled
anziché enabled=true
. Quest'ultimo sarebbe stato un attributo di coppie valore-chiave. Questa non sarebbe stata una buona scelta.
Si consideri il seguente:
enabled=false
enabled=0
enabled=FALSE
enabled=no
enabled=disabled
enabled=flase
etc...
Il browser avrebbe dovuto essere in grado di far fronte a un numero enorme di possibili valori. Farne una bandiera booleana semplifica enormemente le cose. Rende le specifiche più facili da capire, sia per lo sviluppatore del sito web che per lo sviluppatore del browser.
L'altra cosa da tenere a mente è che il tempo in cui questa proprietà è stata aggiunta all'HTML era nel mezzo delle cosiddette "guerre del browser". Molte funzionalità sono state aggiunte ai browser Web concorrenti, in tutta fretta e senza il vantaggio di specifiche formali, e sono state aggiunte molte funzionalità che possiamo davvero guardare indietro e vorrei che fosse leggermente diversa.
Non credo che questa sia una di quelle caratteristiche: la bandiera disabled
è perfettamente logica se ci si ferma e ci si pensa. Ma è abbastanza probabile che potrebbe essere stato progettato meglio se gli sviluppatori del browser avessero collaborato un po 'più indietro allora.
In ogni caso, la situazione attuale è che questo è ciò che abbiamo. Le specifiche HTML potrebbero essere in evoluzione, ma le funzionalità esistenti come questa non cambieranno ora.
Forse, ma il W3C ha fatto così, e lamentarsi qui non lo cambierà. – alex