Los atributos deben tener un valor, incluso para los atributos cuya mera presencia indica que se debe hacer algo. disabled="false"aún deshabilitaría el elemento, porque es la PRESENCIA de lo disabledque desencadena la deshabilitación, no el valor del atributo.
La presencia de un atributo booleano en un elemento representa el valor verdadero, y la ausencia del atributo representa el valor falso.
Si el atributo está presente, su valor debe ser la cadena vacía o un valor que sea una coincidencia entre mayúsculas y minúsculas ASCII para el nombre canónico del atributo, sin espacios en blanco iniciales o finales.
conclusión :
Los siguientes son válidos, equivalentes y verdaderos :
La ausencia del atributo es la única sintaxis válida para falso :
<inputtype="text"/>
Recomendación
Si le interesa escribir XHTML válido, use disabled="disabled", ya <input disabled>que no es válido y otras alternativas son menos legibles. De lo contrario, solo utilícelo <input disabled>ya que es más corto.
Nota: Si usa AngularJS y necesita vincular el estado deshabilitado a una variable, puede usarlo ng-disableden su lugar. Similar a otros atributos como este, generalmente tienen una ng-*contraparte inteligente
jakub.g
55
disabled={true}funciona en el código JSX de reactJs pero estoy seguro de que se transpilaría a uno de los formatos HTML5 válidos / permitidos solamente
RBT
1
Acabo de probar todo esto, y para IE11, lo único que parece funcionar es deshabilitado = "verdadero". Los valores deshabilitados o sin valor dado no funcionaron. De hecho, el jsp obtuvo un error que requiere igual para todos los campos, así que tuve que especificar disabled = "true" para que esto funcione.
La pregunta de OP era sobre HTML (es decir, controles del lado del cliente). Estás mirando los controles del lado del servidor; los que tienen diferentes convenciones. Notarás la diferencia si inspeccionas la salida HTML de tu JSP. Si aún tiene dudas, pruebe este violín en IE11.
Ruud Helderman el
He visto lo mismo en el lado del cliente en IE 11. IE 11 obliga a que exista algo, así que simplemente configurando los resultados deshabilitados en disabled = ""
Robert Achmann
1
En HTML5, no hay un valor correcto, a todos los principales navegadores realmente no les importa cuál es el atributo, solo están verificando si el atributo existe para que el elemento esté deshabilitado.
disabled="false"
aún deshabilitaría el elemento, porque es la PRESENCIA de lodisabled
que desencadena la deshabilitación, no el valor del atributo.Respuestas:
<input type="text" disabled="disabled" />
es el marcado válido.<input type="text" disabled />
es válido y lo utiliza W3C en sus muestras.fuente
Especificación HTML5 :
http://www.w3.org/TR/html5/forms.html#enabling-and-disabling-form-controls:-the-disabled-attribute :
http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes :
conclusión :
Los siguientes son válidos, equivalentes y verdaderos :
Los siguientes no son válidos :
La ausencia del atributo es la única sintaxis válida para falso :
Recomendación
Si le interesa escribir XHTML válido, use
disabled="disabled"
, ya<input disabled>
que no es válido y otras alternativas son menos legibles. De lo contrario, solo utilícelo<input disabled>
ya que es más corto.fuente
ng-disabled
en su lugar. Similar a otros atributos como este, generalmente tienen unang-*
contraparte inteligentedisabled={true}
funciona en el código JSX de reactJs pero estoy seguro de que se transpilaría a uno de los formatos HTML5 válidos / permitidos solamenteAcabo de probar todo esto, y para IE11, lo único que parece funcionar es deshabilitado = "verdadero". Los valores deshabilitados o sin valor dado no funcionaron. De hecho, el jsp obtuvo un error que requiere igual para todos los campos, así que tuve que especificar disabled = "true" para que esto funcione.
fuente
En HTML5, no hay un valor correcto, a todos los principales navegadores realmente no les importa cuál es el atributo, solo están verificando si el atributo existe para que el elemento esté deshabilitado.
fuente