Ich habe ein wenig darüber gelesen, aber ich kann anscheinend nichts Festes darüber finden, wie verschiedene Browser Dinge behandeln.
Ich habe ein wenig darüber gelesen, aber ich kann anscheinend nichts Festes darüber finden, wie verschiedene Browser Dinge behandeln.
Antworten:
Ein readonly
Element kann einfach nicht bearbeitet werden, sondern wird gesendet, wenn das entsprechende Element gesendet wird form
. EINdisabled
Element kann nicht bearbeitet werden und wird beim Senden nicht gesendet. Ein weiterer Unterschied besteht darin, dass readonly
Elemente fokussiert werden können (und fokussiert werden, wenn Sie durch ein Formular "tippen"), während disabled
Elemente dies nicht können.
Lesen Sie mehr darüber in diesem großartigen Artikel oder in der Definition von w3c . Um den wichtigen Teil zu zitieren:
Hauptunterschiede
Das Attribut Deaktiviert
- Werte für deaktivierte Formularelemente werden nicht an die Prozessormethode übergeben. Das W3C nennt dies ein erfolgreiches Element. (Dies funktioniert ähnlich wie Kontrollkästchen, die nicht aktiviert sind.)
- Einige Browser überschreiben möglicherweise Standardstile für deaktivierte Formularelemente oder bieten diese an. (Vergrauen oder Prägen von Text) Internet Explorer 5.5 ist diesbezüglich besonders unangenehm.
- Deaktivierte Formularelemente erhalten keinen Fokus.
- Deaktivierte Formularelemente werden in der Tabulatornavigation übersprungen.
Das schreibgeschützte Attribut
- Nicht alle Formularelemente haben ein schreibgeschütztes Attribut. Am bemerkenswertesten, die
<SELECT>
,<OPTION>
und<BUTTON>
Elemente keine Read - only - Attribute (obwohl sie beide deaktiviert Attribute)- Browser bieten keine standardmäßig überschriebene visuelle Rückmeldung, dass das Formularelement schreibgeschützt ist. (Dies kann ein Problem sein ... siehe unten.)
- Formularelemente mit dem Attribut readonly werden an den Formularprozessor übergeben.
- Schreibgeschützte Formularelemente können den Fokus erhalten
- Schreibgeschützte Formularelemente sind in der Navigation mit Registerkarten enthalten.
disabled
impliziert readonly
, readonly
aber nicht impliziert disabled
. Mit anderen Worten, wenn ein Element das disabled
Attribut hat, muss das Attribut nicht ebenfalls enthalten sein readonly
. Richtig?
Es werden keine Ereignisse ausgelöst, wenn das Element das Attribut deaktiviert hat.
Keiner der folgenden Punkte wird ausgelöst.
$("[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
Während schreibgeschützt wird ausgelöst.
$("[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
Deaktiviert bedeutet, dass beim Senden des Formulars keine Daten von diesem Formularelement gesendet werden. Schreibgeschützt bedeutet, dass alle Daten aus dem Element gesendet werden, aber vom Benutzer nicht geändert werden können.
Zum Beispiel:
<input type="text" name="yourname" value="Bob" readonly="readonly" />
Dadurch wird der Wert "Bob" für das Element "yourname" übergeben.
<input type="text" name="yourname" value="Bob" disabled="disabled" />
Dies wird nichts für das Element "Ihr Name" senden.
readonly
und disabled
sind boolesche Werte. Verwenden Sie disabled
anstelle von disabled="disabled"
(gleich für readonly)
attrname="attrname"
. Auf jeden Fall scheint es nicht besonders gut dokumentiert zu sein, zumindest nicht, dass ich es finden kann. Nun, es gibt dies - w3.org/TR/html4/intro/sgmltut.html#h-3.3.4.2 - aber es erwähnt nur speziell SGML und HTML, nicht XHTML ... zu viele Akronyme: S
Boolean attributes may legally take a single value: the name of the attribute itself (e.g., selected="selected").
Die leere Zeichenfolge scheint also nicht gültig zu sein.
Wie die anderen Antworten (deaktiviert wird nicht an den Server gesendet, schreibgeschützt), aber einige Browser verhindern das Hervorheben eines deaktivierten Formulars, während schreibgeschützt weiterhin hervorgehoben (und kopiert) werden kann.
http://www.w3schools.com/tags/att_input_disabled.asp
http://www.w3schools.com/tags/att_input_readonly.asp
Ein schreibgeschütztes Feld kann nicht geändert werden. Ein Benutzer kann jedoch darauf zugreifen, es markieren und den Text daraus kopieren.
Wenn der Wert eines deaktivierten Textfelds beim Löschen eines Formulars (Zurücksetzen) beibehalten werden muss, disabled = "disabled"
muss es verwendet werden, da das schreibgeschützte Textfeld den Wert nicht beibehält
Zum Beispiel:
HTML
Textfeld
<input type="text" id="disabledText" name="randombox" value="demo" disabled="disabled" />
Reset-Knopf
<button type="reset" id="clearButton">Clear</button>
Wenn im obigen Beispiel die Schaltfläche Löschen gedrückt wird, bleibt der deaktivierte Textwert im Formular erhalten. Der Wert wird im Fall von nicht beibehalteninput type = "text" readonly="readonly"