Risposte:
Un readonly
elemento non è modificabile, ma viene inviato quando viene inviato il corrispondente form
. Un disabled
elemento non è modificabile e non viene inviato al momento dell'invio. Un'altra differenza è che gli readonly
elementi possono essere focalizzati (e focalizzati quando si "tabula" attraverso un modulo) mentre gli disabled
elementi non possono.
Maggiori informazioni su questo in questo fantastico articolo o nella definizione di w3c . Per citare la parte importante:
Differenze chiave
L'attributo Disabled
- I valori per gli elementi del modulo disabilitati non vengono passati al metodo del processore. Il W3C lo definisce un elemento di successo (funziona in modo simile alle caselle di controllo dei moduli che non sono selezionate).
- Alcuni browser possono sostituire o fornire uno stile predefinito per gli elementi del modulo disabilitati. (Testo in grigio o in rilievo) Internet Explorer 5.5 è particolarmente sgradevole al riguardo.
- Gli elementi del modulo disabilitati non ricevono lo stato attivo.
- Gli elementi del modulo disabilitati vengono ignorati nella navigazione delle schede.
L'attributo di sola lettura
- Non tutti gli elementi del modulo hanno un attributo di sola lettura. Gli elementi più importanti, the
<SELECT>
,<OPTION>
e<BUTTON>
non hanno attributi di sola lettura (sebbene entrambi abbiano attributi disabilitati)- I browser non forniscono alcun feedback visivo ignorato predefinito che l'elemento del modulo è di sola lettura. (Questo può essere un problema ... vedi sotto.)
- Gli elementi del modulo con l'attributo readonly impostato verranno passati al processore del modulo.
- Gli elementi modulo di sola lettura possono ricevere lo stato attivo
- Gli elementi del modulo di sola lettura sono inclusi nella navigazione a schede.
disabled
implica readonly
ma readonly
non implica disabled
. In altre parole, se un elemento ha l' disabled
attributo, non è necessario includere anche l' readonly
attributo. Corretta?
Nessun evento viene attivato quando l'elemento ha l'attributo disabilitato.
Nessuna delle opzioni seguenti verrà attivata.
$("[disabled]").click( function(){ console.log("clicked") });//No Impact
$("[disabled]").hover( function(){ console.log("hovered") });//No Impact
$("[disabled]").dblclick( function(){ console.log("double clicked") });//No Impact
Mentre di sola lettura verrà attivato.
$("[readonly]").click( function(){ console.log("clicked") });//log - clicked
$("[readonly]").hover( function(){ console.log("hovered") });//log - hovered
$("[readonly]").dblclick( function(){ console.log("double clicked") });//log - double clicked
Disabilitato significa che non verranno inviati dati da quell'elemento del modulo quando il modulo viene inviato. Sola lettura significa che tutti i dati all'interno dell'elemento verranno inviati, ma non possono essere modificati dall'utente.
Per esempio:
<input type="text" name="yourname" value="Bob" readonly="readonly" />
Questo invierà il valore "Bob" per l'elemento "tuonome".
<input type="text" name="yourname" value="Bob" disabled="disabled" />
Questo non invierà nulla per l'elemento "tuonome".
readonly
e disabled
sono valori booleani. Usa disabled
invece di disabled="disabled"
(stesso per sola lettura)
attrname="attrname"
. Ad ogni modo, non sembra essere particolarmente ben documentato, almeno non quello che riesco a trovare. Bene, c'è questo - w3.org/TR/html4/intro/sgmltut.html#h-3.3.4.2 - ma menziona specificamente SGML e HTML, non XHTML .... troppi acronimi: S
Boolean attributes may legally take a single value: the name of the attribute itself (e.g., selected="selected").
quindi la stringa vuota non sembra essere valida.
Come le altre risposte (disabilitato non viene inviato al server, lo è di sola lettura) ma alcuni browser impediscono l'evidenziazione di un modulo disabilitato, mentre la sola lettura può ancora essere evidenziata (e copiata).
http://www.w3schools.com/tags/att_input_disabled.asp
http://www.w3schools.com/tags/att_input_readonly.asp
Un campo di sola lettura non può essere modificato. Tuttavia, un utente può eseguire la tabulazione, evidenziarlo e copiarne il testo.
Se il valore di una casella di testo disabilitata deve essere mantenuto quando un modulo viene cancellato (ripristinato), disabled = "disabled"
deve essere utilizzato, poiché la casella di testo di sola lettura non manterrà il valore
Per esempio:
HTML
Casella di testo
<input type="text" id="disabledText" name="randombox" value="demo" disabled="disabled" />
Tasto reset
<button type="reset" id="clearButton">Clear</button>
Nell'esempio sopra, quando si preme il pulsante Cancella, il valore del testo disabilitato verrà mantenuto nel modulo. Il valore non verrà mantenuto nel caso diinput type = "text" readonly="readonly"