Was ist der richtige Wert für das deaktivierte Attribut?

167

Was ist der richtige Wert für das disabledAttribut für ein Textfeld oder einen Textbereich?

Ich habe Folgendes bereits gesehen:

<input type="text" disabled />
<input type="text" disabled="disabled" />
<input type="text" disabled="true" />
tskuzzy
quelle
5
Attribute müssen einen Wert haben, auch für die Attribute, deren bloße Anwesenheit signalisiert, dass etwas getan werden muss. disabled="false"würde das Element immer noch deaktivieren, da es die PRÄSENZ ist disabled, die die Deaktivierung auslöst, nicht der Wert des Attributs.
Marc B
Der Link, den ich als Kommentar zu js1568s Antwort gepostet habe, bestätigt / verdeutlicht, was @Marc B sagt: whatwg.org/specs/web-apps/current-work/multipage/…
James Allardice
Mögliches Duplikat von stackoverflow.com/questions/1033944/…, da beide boolesche Attribute sind (nicht markiert)
Ciro Santilli 5 冠状 病 六四 事件 法轮功

Antworten:

148
  • Für XHTML <input type="text" disabled="disabled" />ist das gültige Markup.
  • Für HTML5 <input type="text" disabled />ist gültig und wird von W3C für ihre Beispiele verwendet.
  • Tatsächlich funktionieren beide Methoden in allen gängigen Browsern.
Erick Petrucelli
quelle
15
In HTML5 ist die Eingabe ein ungültiges Element und benötigt keinen selbstschließenden Schrägstrich: w3.org/TR/html5/syntax.html#void-elements und w3.org/TR/html5/syntax.html#syntax-start- Tag
Daniel
1
@ Daniel K. Es wird nicht benötigt, es sei denn, es wird ein mehrsprachiges HTML / XML-Markup ausgeführt.
Patanjali
108

HTML5-Spezifikation :

http://www.w3.org/TR/html5/forms.html#enabling-and-disabling-form-controls:-the-disabled-attribute :

Das geprüfte Inhaltsattribut ist ein boolesches Attribut

http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes :

Das Vorhandensein eines booleschen Attributs für ein Element repräsentiert den wahren Wert, und das Fehlen des Attributs repräsentiert den falschen Wert.

Wenn das Attribut vorhanden ist, muss sein Wert entweder die leere Zeichenfolge oder ein Wert sein, bei dem der kanonische Name des Attributs nicht zwischen Groß- und Kleinschreibung unterschieden wird, ohne führende oder nachfolgende Leerzeichen.

Fazit :

Folgendes ist gültig, gleichwertig und wahr :

<input type="text" disabled />
<input type="text" disabled="" />
<input type="text" disabled="disabled" />
<input type="text" disabled="DiSaBlEd" />

Folgendes ist ungültig :

<input type="text" disabled="0" />
<input type="text" disabled="1" />
<input type="text" disabled="false" />
<input type="text" disabled="true" />

Das Fehlen des Attributs ist die einzig gültige Syntax für false :

<input type="text" />

Empfehlung

Wenn Sie gültiges XHTML schreiben möchten, verwenden Sie disabled="disabled", da <input disabled>es ungültig ist und andere Alternativen weniger lesbar sind. Andernfalls verwenden <input disabled>Sie es einfach, da es kürzer ist.

Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
quelle
3
Hinweis: Wenn Sie AngularJS verwenden und den deaktivierten Status an eine Variable binden müssen, können Sie ng-disabledstattdessen verwenden. Ähnlich wie bei anderen Attributen wie diesen haben sie im Allgemeinen ein intelligentes ng-*Gegenstück
jakub.g
5
disabled={true}funktioniert in reagJs JSX-Code, aber ich bin sicher, dass er nur in eines der gültigen / erlaubten HTML5-Formate transpiliert wird.
RBT
1

Ich habe gerade all dies ausprobiert, und für IE11 scheint das einzige, was zu funktionieren scheint, deaktiviert = "wahr" zu sein. Werte für deaktiviert oder kein Wert angegeben hat nicht funktioniert. Tatsächlich hat der JSP einen Fehler erhalten, der für alle Felder gleich ist. Daher musste ich disabled = "true" angeben, damit dies funktioniert.

Edmond ME
quelle
1
Die Frage von OP betraf HTML (dh clientseitige Steuerelemente). Sie betrachten serverseitige Steuerelemente. diese haben unterschiedliche Konventionen. Sie werden den Unterschied bemerken, wenn Sie die HTML-Ausgabe Ihrer JSP überprüfen. Wenn Sie immer noch Zweifel haben, versuchen Sie diese Geige in IE11.
Ruud Helderman
Ich habe das gleiche auf der Clientseite in IE 11 gesehen. IE 11 erzwingt die Existenz von etwas, so dass nur das Setzen von deaktivierten Ergebnissen in disabled = ""
Robert Achmann
1

In HTML5 gibt es keinen korrekten Wert. Allen gängigen Browsern ist es egal, was das Attribut ist. Sie prüfen lediglich, ob das Attribut vorhanden ist, sodass das Element deaktiviert ist.

MadsHaupt
quelle