Frage

W3Schools dies zu sagen Etiketten :

  

Der <label> Tag definiert ein Etikett für eine Eingabe Element.    [Hervorhebung von mir]

Bedeutet dies, dass die folgende HTML nicht gültig ist?

<!doctype html>
<html>
    <head>
         <title>Example document</title>
    </head>
    <body>
        <label for="x">Label</label> 
        <hr>
        <div id="q" contentEditable="true">Hello</div>
        <hr>
        <div id="x" contentEditable="true">World</div>
    </body>
</html>

Sowohl Chrome und IE8 geben Fokus auf World wenn Label geklickt wird, tut Firefox nicht. Was ist richtig?

War es hilfreich?

Lösung

Nach dem W3C es gilt zur Form Controls und Form Controls sind definiert als :

  • Buttons
  • Ankreuzfelder
  • Radio-Tasten
  • Menüs
  • Texteingabe
  • Datei auswählen
  • versteckte Kontrollen
  • Object-Tags

So FireFox technisch richtig ist, obwohl ich es kaum betrachten würde zu „brechen“, wenn ein Browser sie beschränken sich nicht auf diese Elemente.

Andere Tipps

Die HTML-Spezifikation sagt, über label das Attribut „for“, „Wenn sie vorhanden ist, wird der Wert dieses Attributs muss das gleiche wie der Wert des id-Attributs von einem anderen Steuer im selben Dokument sein. Wenn nicht vorhanden, das Etikett zu sein definiert ist, mit dem Elemente Inhalt zugeordnet ist. "

So ist die ID Referenzen in „für“ das ein Steuer sein sollten. Was ist eine Kontrolle? Die Spezifikation sagt im Grunde jede input eine Kontrolle ist, wie button ist, select oder object. So Firefox ist technisch recht - a. div ist kein Steuer

Ich würde sagen, dass es keine angemessene Verwendung der Markup ist, weil Label Semantik ist, dass sie speziell für die Kontrollen sind.

  

Das LABEL-Element wird angegeben,   Etiketten für die Kontrollen, die nicht über   implizite Etiketten,

http://www.w3.org /TR/html401/interact/forms.html#h-17.9.1

Die neueste WHATWG spec hat folgendes zu sagen:

  

Einige Elemente, nicht alle von ihnen form verbunden sind, werden als markierbare Elemente kategorisiert. Dies sind Elemente, die mit einem Label-Element zugeordnet werden können.

     
      
  • button, input (wenn das type Attribut ist nicht im versteckten Zustand), meter, output, progress, select, textarea
  •   
     

...

     

Das for Attribut kann angegeben werden, um eine Formularsteuerung, um anzuzeigen, mit dem die Beschriftung verknüpft werden soll. Wenn das Attribut angegeben ist, muss der Wert des Attributs die ID eines markierbaren Element im gleichen Baum wie das label Element sein.

(Quelle: https://html.spec.whatwg.org/multipage/ Forms.html .)

Mit anderen Worten, nur der Standard erlaubt for Attribute an Elementen eines der 7-Tag oben aufgeführten Typen zu zeigen. Der HTML-Code in der Frage ausgestellt (die ein for Element verwendet, um einen editierbare div zu-Punkt) ist daher technisch ungültig HTML unter dem aktuellen spec.

Die Nu Html Checker (die durch WHATWG unterstützt) zustimmt; wenn Sie es bitten, das HTML-Dokument von der Frage zu bestätigen, wird es sagen:

  

Fehler . Der Wert des for Attributs des label Elements muss die ID einer nicht verborgen Form Kontrolle sein

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top