Os atributos precisam ter um valor, mesmo para os atributos cuja mera presença sinaliza que algo deve ser feito. disabled="false"ainda desativaria o elemento, porque é a PRESENÇA disabledque aciona a desativação, não o valor do atributo.
A presença de um atributo booleano em um elemento representa o valor verdadeiro e a ausência do atributo representa o valor falso.
Se o atributo estiver presente, seu valor deverá ser a cadeia vazia ou um valor que não diferencia maiúsculas de minúsculas ASCII do nome canônico do atributo, sem espaços em branco à esquerda ou à direita.
Conclusão :
A seguir, são válidos, equivalentes e verdadeiros :
A ausência do atributo é a única sintaxe válida para false :
<inputtype="text"/>
Recomendação
Se você se preocupa em escrever XHTML válido, use disabled="disabled", pois <input disabled>é inválido e outras alternativas são menos legíveis. Caso <input disabled>contrário , basta usar , pois é mais curto.
Nota: Se você usa AngularJS e precisa vincular o estado desativado a uma variável, pode usar ng-disabled. Similar com outros atributos como este, geralmente eles têm inteligente ng-*homólogo
jakub.g
5
disabled={true}funciona no código JSX do reactJs, mas tenho certeza de que ele seria transpilado para um dos formatos HTML5 válidos / permitidos apenas.
RBT 23/10
1
Eu apenas tentei tudo isso e, para o IE11, a única coisa que parece funcionar é desativada = "true". Valores desabilitados ou nenhum valor fornecido não funcionaram. Por uma questão de fato, o jsp obteve um erro igual para todos os campos, então tive que especificar disabled = "true" para que isso funcionasse.
A pergunta do OP era sobre HTML (isto é, controles do lado do cliente). Você está olhando para os controles do lado do servidor; aqueles têm convenções diferentes. Você notará a diferença se inspecionar a saída HTML do seu JSP. Se você ainda tiver dúvidas, tente este violão no IE11.
Ruud Helderman
Eu vi a mesma coisa no lado do cliente no IE 11. O IE 11 força algo a existir, portanto, apenas definir resultados desabilitados em desabilitado = ""
Robert Achmann 7/17
1
No HTML5, não existe um valor correto; todos os principais navegadores não se importam com o atributo, apenas estão verificando se o atributo existe para que o elemento seja desativado.
disabled="false"
ainda desativaria o elemento, porque é a PRESENÇAdisabled
que aciona a desativação, não o valor do atributo.Respostas:
<input type="text" disabled="disabled" />
é a marcação válida.<input type="text" disabled />
é válido e usado pelo W3C em suas amostras.fonte
Especificação 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 :
Conclusão :
A seguir, são válidos, equivalentes e verdadeiros :
O seguinte é inválido :
A ausência do atributo é a única sintaxe válida para false :
Recomendação
Se você se preocupa em escrever XHTML válido, use
disabled="disabled"
, pois<input disabled>
é inválido e outras alternativas são menos legíveis. Caso<input disabled>
contrário , basta usar , pois é mais curto.fonte
ng-disabled
. Similar com outros atributos como este, geralmente eles têm inteligenteng-*
homólogodisabled={true}
funciona no código JSX do reactJs, mas tenho certeza de que ele seria transpilado para um dos formatos HTML5 válidos / permitidos apenas.Eu apenas tentei tudo isso e, para o IE11, a única coisa que parece funcionar é desativada = "true". Valores desabilitados ou nenhum valor fornecido não funcionaram. Por uma questão de fato, o jsp obteve um erro igual para todos os campos, então tive que especificar disabled = "true" para que isso funcionasse.
fonte
No HTML5, não existe um valor correto; todos os principais navegadores não se importam com o atributo, apenas estão verificando se o atributo existe para que o elemento seja desativado.
fonte