2009-07-07 13 views
11

W3Schools tienen esto que decir acerca labels:¿Puede una etiqueta referirse solo a elementos de entrada?

La etiqueta <label> define una etiqueta para una elemento de entrada. [El énfasis es mío]

¿Quiere decir esto que el siguiente código HTML no es válida?

<html> 
    <body> 
     <label for="x">Label</label> 
     <hr> 
     <div id="q" contentEditable="true">Hello</div> 
     <hr> 
     <div id="x" contentEditable="true">World</div> 
    </body> 
</html> 

Tanto Chrome y IE8 dan enfoque a World cuando se hace clic Label, Firefox no lo hace. ¿Cuál es la correcta?

Respuesta

8

De acuerdo con la W3C se aplica a controles de formulario y controles de formulario son defined as:

  • Botones
  • Las casillas de verificación
  • Los botones de radio
  • Menús seleccionar
  • Entrada de texto
  • Archivo
  • controles ocultos
  • etiquetas object

Así Firefox es técnicamente correcto, aunque yo casi no considero que sea "rompiendo" si un navegador no se limitó a esos elementos.

+0

Los elementos semánticos son un primer gran paso para todos en la web, por lo que generalmente es una buena práctica seguir las especificaciones para los lectores de pantalla y demás. – Olga

5

La especificación HTML dice, sobre label 's "para" atributo, "Cuando está presente, el valor de este atributo debe ser el mismo que el valor del atributo id de algún otro control en el mismo documento. Cuando está ausente, la etiqueta que se está definiendo está asociada con el contenido del elemento".

Por lo tanto, las referencias de id en "para" deben ser las de un control. ¿Qué es un control? La especificación básicamente dice que cualquier input es un control, como es button, select o object. Entonces, Firefox es técnicamente correcto: un div no es un control.

+0

Sigues diciendo 'id', ¿no te refieres a' for'? – Motti

+0

Sí, tienes razón. Editado para corregir –

Cuestiones relacionadas