www3 form entre ejemplo diferencias html web xhtml

form - xhtml vs html



¿Por qué necesitamos disabled="disabled"? (4)

@Spudley ya le dio el enlace a las especificaciones de XHTML para proporcionar la documentación oficial.

Sin embargo, la elección de hacer que tanto el atributo como el valor sean iguales en XHTML no fue del todo arbitraria.

Como dice @Sohnee, XHTML 1.0 fue una reformulación de HTML4.01 en XML y el objetivo era mantener los patrones HTML 4 tanto como sea posible para hacer la transición lo más fácil posible para los autores web.

HTML siempre ha admitido disabled="disabled" como una forma válida para los atributos booleanos, y la razón de esto es que permite que el atributo abreviado disabled se defina en SGML. (Tenga en cuenta el comentario "poco extraño" de @Thaddee Tyl)

En SGML, el disabled en su propio atributo no es el nombre del atributo sin un valor, es el valor del atributo sin un nombre. es decir, el nombre se deduce del valor. Para que todo esto funcione en SGML y sea compatible con versiones anteriores de lo que los navegadores siempre han hecho, el nombre y el valor deben definirse para ser iguales.

Tenga en cuenta que esto solo afecta la validación basada en SGML. La lógica del analizador de navegadores no está basada en SGML y nunca se ha preocupado por esta sutileza, por lo tanto, en la práctica puede poner cualquier valor para el atributo que desee.

La validación HTML5 tampoco está basada en SGML, por lo que la restricción se ha relajado. disabled="" ahora es válido. disabled="true" y disabled="false" no son válidos, porque disabled="false" es confuso, ya que como se nota, desactiva, no habilita el control. Ver http://www.w3.org/TR/html5/common-microsyntaxes.html#boolean-attributes para más detalles.

Parece ser un consenso común que para los atributos XHTML que no requieren ningún valor, debemos repetir el nombre del atributo. Por ejemplo, <input disabled> en XHTML correcto es <input disabled="disabled"/> .

Sin embargo, podemos hacer que el elemento HTML <input> se deshabilite mediante cualquiera de los siguientes:

  • <input disabled=" "/>

  • <input disabled=""/>

  • <input disabled="asdfg">

  • <input disabled="false">

¿Existe realmente una regla oficial para usar disabled="disabled" ? ¿O es una cuestión de gusto?


Hay documentación para esto, el término oficial para este tipo de atributos es "Atributos Booleanos"

El estándar oficial se encuentra en el sitio web del W3C http://www.w3.org/TR/html4/intro/sgmltut.html#h-3.3.4.2

Dice que:

Su aparición en la etiqueta de inicio de un elemento implica que el valor del atributo es "verdadero". Su ausencia implica un valor de "falso".

Para que su marcaje XHTML sea válido, debe usar la mano larga

<option selected="selected">

Para HTML, puede usar la forma minimizada

<option selected>


La sintaxis xhtml oficialmente correcta está disabled="disabled" .

La razón de esto es que xhtml es una sintaxis XML, y XML requiere que los atributos tengan valores. Las especificaciones xhtml también especifican explícitamente que el valor debe estar "deshabilitado".

El motivo de la elección de este valor sobre cualquier otro valor posible fue bastante arbitrario; simplemente decidieron que todos los atributos previamente booleanos deberían convertirse a formato XML haciendo que su valor sea el mismo que su nombre.

Entonces sí, hay una especificación oficial que dice que debes usar esa sintaxis completa. Pero solo se aplica a documentos xhtml. Puede encontrarlo here (si busca disabled en esa página, encontrará que está en la lista solo para permitir el valor de "disabled" . De manera similar para los atributos readonly y checked ).

El HTML simple - tanto v4 como v5 - no está vinculado a las restricciones de XML de esta manera, y no requiere un valor de atributo para disabled ; la mera existencia del atributo disabled es suficiente para deshabilitar el campo, independientemente de si tiene un valor para el atributo o cuál es ese valor.

El resultado final de todo esto es que si está utilizando un doctype XHTML o desea seguir siendo compatible con XML, debe usar disabled="disabled" . Si no está utilizando XHTML y no le importa tener una sintaxis XML válida, puede usar la función de disabled por sí sola o con cualquier valor de atributo que desee.

Otra cosa que señalaría (desviarse ligeramente del tema, pero puede ser relevante) es que esto puede tener un impacto en cualquier código CSS o JQuery que pueda hacer referencia al campo. Por ejemplo, he visto personas que usan selectores de JQuery como $(''[disabled=disabled]'') y similares en CSS. Esto obviamente se basa en el atributo que tiene el valor esperado. Por lo tanto, si va a hacer referencia a un atributo booleano como este en un selector, debe hacer referencia a él sin un valor, como por ejemplo: $(''[disabled]'') ya que funcionará independientemente del atributo que se establezca.


http://www.w3.org/TR/html4/intro/sgmltut.html#h-3.3.4.2 especifica esto:

Los atributos booleanos pueden tomar legalmente un único valor: el nombre del atributo en sí.

Los atributos booleanos siempre fueron un poco extraños en el mundo sgml, así que realmente puedes poner lo que quieras. La implementación del navegador es lo único que importa.