it-swarm.com.de

Was ist der richtige Wert für ein geprüftes Attribut eines HTML-Kontrollkästchens?

Wir alle wissen, wie man eine Checkbox-Eingabe in HTML bildet:

<input name="checkbox_name" id="checkbox_id" type="checkbox">

Was weiß ich nicht - was ist der technisch korrekte Wert für ein Häkchen? Ich habe gesehen, dass alle funktionieren: 

<input name="checkbox_name" id="checkbox_id" type="checkbox" checked>
    <input name="checkbox_name" id="checkbox_id" type="checkbox" checked="on">
    <input name="checkbox_name" id="checkbox_id" type="checkbox" checked="yes">
    <input name="checkbox_name" id="checkbox_id" type="checkbox" checked="checked">
    <input name="checkbox_name" id="checkbox_id" type="checkbox" checked="true">

Ist die Antwort, dass es keine Rolle spielt? Ich sehe keine Beweise für die als richtig markierte Antwort hier aus der Spezifikation selbst:

Kontrollkästchen (und Optionsfelder) sind Ein/Aus-Schalter, die umgeschaltet werden können vom Benutzer. Ein Schalter ist "Ein", wenn das Steuerelement geprüft wird Attribut ist gesetzt. Wenn ein Formular gesendet wird, ist nur das Kontrollkästchen "Ein" Kontrollen können erfolgreich werden. Mehrere Ankreuzfelder in einem Formular können derselbe Kontrollname. So ermöglichen zum Beispiel Kontrollkästchen Benutzern, Wählen Sie mehrere Werte für dieselbe Eigenschaft aus. Das INPUT-Element wird verwendet um ein Kontrollkästchen zu erstellen.

Was würde ein Spezialist sagen, ist die richtige Antwort? Bitte geben Sie evidenzbasierte Antworten.

400
buley

Streng genommen sollte man etwas sinnvolles setzen - laut Spezifikation hier lautet die korrekteste Version:

<input name=name id=id type=checkbox checked=checked>

Für HTML können Sie auch die empty-Attributsyntax , checked="" oder einfach checked verwenden (für strengere XHTML ist dies nicht unterstützt ).

Die meisten Browser unterstützen jedoch praktisch alle Werte zwischen den Anführungszeichen. Alle folgenden Punkte werden geprüft:

<input name=name id=id type=checkbox checked>
<input name=name id=id type=checkbox checked="">
<input name=name id=id type=checkbox checked="yes">
<input name=name id=id type=checkbox checked="blue">
<input name=name id=id type=checkbox checked="false">

Und nur das Folgende wird nicht aktiviert:

<input name=name id=id type=checkbox>

Siehe auch diese ähnliche Frage zu disabled="disabled" .

426
Hannele

HTML5-Spezifikation:

http://www.w3.org/TR/html5/forms.html#attr-input-checked :

Das deaktivierte Inhaltsattribut ist ein boolesches Attribut.

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

Das Vorhandensein eines booleschen Attributs in einem 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 es sich um eine Übereinstimmung zwischen ASCII und dem kanonischen Namen des Attributs handelt.

Fazit:

Folgende sind gültig, gleichwertig und wahr:

<input type="checkbox" checked />
<input type="checkbox" checked="" />
<input type="checkbox" checked="checked" />
<input type="checkbox" checked="ChEcKeD" />

Folgendes ist invalid:

<input type="checkbox" checked="0" />
<input type="checkbox" checked="1" />
<input type="checkbox" checked="false" />
<input type="checkbox" checked="true" />

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

<input />

Empfehlung

Wenn Sie gültiges XHTML schreiben möchten, verwenden Sie checked="checked", da <input checked> ungültiges XHTML (aber gültiger HTML-Code) ist und andere Alternativen weniger lesbar sind. Ansonsten verwenden Sie einfach <input checked>, da es kürzer ist.

<input ... checked />
<input ... checked="checked" />

Das gilt gleichermaßen. Und in JavaScript:

input.checked = true;
input.setAttribute("checked");
input.setAttribute("checked","checked");
34

sie wollen das, denke ich: checked='checked'

7
Johnny Craig
  1. geprüft 
  2. checked = ""
  3. checked = "checked"

    sind gleichwertig;


laut spec checkbox '---- ⓘ checked = "checked" oder "" (leere Zeichenfolge) oder leer Gibt an, dass das Element ein ausgewähltes Steuerelement darstellt.

5
wengeezhang

Es ist eine ziemlich verrückte Stadt, dass der einzige Weg, um falsch zu machen, darin besteht, Werte wegzulassen. Mit Angular 1.x können Sie Folgendes tun:

  <input type="radio" ng-checked="false">

das ist viel vernünftiger, wenn Sie es deaktivieren müssen.

2
Alexander Mills