2012-05-31 4 views
33

Ich habe die drei Implementierungen der Vorauswahl eines Kontrollkästchens gesehen. Ich habe mit checked = "checked" angefangen, weil ich dachte, dass es der "richtige" Weg ist (niemals wie "checked" = "yes"). Ich denke darüber nach, zu checked = "true" zu wechseln, da es lesbarer erscheint und einfacher JavaScript zu programmieren ist. Beachten Sie, dass diese Frage auch für andere Attribute wie "deaktiviert" = "deaktiviert" und "deaktiviert" = "wahr" gilt. Solange ich konsistent bin, benutzt "wahr" den bevorzugten Ansatz? DankeEingabekästchen wahr oder markiert oder ja

<input type="checkbox" checked="checked" value="123" name="howdy" /> 
<input type="checkbox" checked="true" value="123" name="howdy" /> 
<input type="checkbox" checked="yes"  value="123" name="howdy" /> 
+0

Was $ ('input [name = foo]'). attr ('geprüft', wahr); Sollte es wirklich $ sein ('input [name = foo]'). Attr ('checked', 'checked')? – user1032531

Antwort

55

Nur checked und checked="checked" gültig sind. Ihre anderen Optionen hängen von der Fehlerbehebung in Browsern ab.

checked="yes" und checked="true" sind besonders schlecht, wie sie implizieren, dass checked="no" und checked="false" wird der Standardzustand gesetzt unkontrolliert zu sein ... das werden sie nicht.

+4

[HTML 5 Spezifikation] (http://www.whatwg.org/specs/web-apps/current-work/multipage/common-microsyntaxes.html#boolean-attribute). –

+0

Tut mir leid, ich wollte es hier hinzufügen ... Was ist mit $ ('input [name = foo]'). Attr ('checked', true) ;? Sollte es wirklich $ sein ('input [name = foo]'). Attr ('checked', 'checked')? – user1032531

+0

Es sollte "jQuery (selector) .prop ('checked', true);' sein ('attr' ist inkonsistent, wie es das checked-Attribut behandelt, sollte also aus Gründen der Gehirne der Betreuer vermieden werden). – Quentin

3

Entsprechend W3C kann das Attribut checked input fehlen/fehlt oder als Wert "checked" sein. Andere Werte werden dadurch nicht ungültig, da die Browserimplementierung nicht eingeschränkt wird, um Werte wie "true", "on", "yes" usw. zuzulassen. Um sicherzustellen, dass Sie ein browserübergreifendes Kontrollkästchen/Radio schreiben, verwenden Sie checked = "checked", wie von W3C empfohlen.

deaktiviert die Attribute readonly und ismap input auf die gleiche Weise.

leer EDITED ist kein gültiger Wert für aufgegebene, Behinderte, von @Quentin nur lesbar und ismap Eingabe der Attribute, warnte als

+0

Nein. Es besagt, dass das checked-Attribut weggelassen werden kann oder den Wert "checked" haben kann. Das macht jeden anderen Wert ungültig (HTML erlaubt nur das Benutzen von erlaubten Dingen, es erlaubt nicht alles zu benutzen, was nicht verboten ist). Da es sich um ein boolesches Attribut handelt, können Sie alles außer * den Wert weglassen, während das Attribut vorhanden ist. d. h. Given 'checked =" checked "' Sie können die ersten 9 Zeichen und das letzte Zeichen festschreiben. – Quentin

+0

Ich sagte, dass dies andere Werte nicht ungültig macht weil ** Browser ** ihren Weg zum Parsen von HTML so wie sie wollen implementieren können, da sie ein weggelassenes/abwesendes checked Attribut akzeptieren oder checked = "checked" als ** recommended ** von W3C . Ich akzeptiere die Negativierung 'casue "leer" ist kein gültiger Wert, aber alles andere gilt weiterhin. –

Verwandte Themen