Atrybuty muszą mieć wartość, nawet dla atrybutów, których sama obecność sygnalizuje, że należy coś zrobić. disabled="false"nadal wyłączyłby element, ponieważ to OBECNOŚĆ disabledpowoduje wyłączenie, a nie wartość atrybutu.
Obecność atrybutu boolowskiego w elemencie reprezentuje wartość prawdziwą, a brak atrybutu reprezentuje wartość fałszywą.
Jeśli atrybut jest obecny, jego wartością musi być pusty ciąg lub wartość będąca dopasowaniem ASCII bez rozróżniania wielkości liter dla nazwy kanonicznej atrybutu, bez wiodących lub końcowych białych znaków.
Brak atrybutu jest jedyną prawidłową składnią dla fałszu :
<inputtype="text"/>
Rekomendacje
Jeśli zależy ci na pisaniu poprawnego XHTML, użyj disabled="disabled", ponieważ <input disabled>jest nieprawidłowy, a inne alternatywy są mniej czytelne. W przeciwnym razie używaj, <input disabled>ponieważ jest krótszy.
Uwaga: Jeśli używasz AngularJS i chcesz powiązać stan wyłączenia ze zmienną, możesz użyć ng-disabledzamiast tego. Podobnie jak inne atrybuty tego typu, generalnie mają one inteligentny ng-*odpowiednik
jakub.g
5
disabled={true}działa w kodzie JSX reakcji, ale jestem pewien, że zostałby transponowany tylko do jednego z prawidłowych / dozwolonych formatów HTML5.
RBT
1
Właśnie wypróbowałem je wszystkie i dla IE11 jedyną rzeczą, która wydaje się działać, jest disabled = „true”. Wartości wyłączenia lub brak podanej wartości nie działały. W rzeczywistości, jsp dostał błąd, który jest równy dla wszystkich pól, więc musiałem określić disabled = "true", aby to zadziałało.
Pytanie OP dotyczyło HTML (tj. Kontroli po stronie klienta). Patrzysz na elementy sterujące po stronie serwera; te mają różne konwencje. Zauważysz różnicę, jeśli sprawdzisz wynik HTML na swojej stronie JSP. Jeśli nadal masz wątpliwości, wypróbuj te skrzypce w IE11.
Ruud Helderman
Widziałem to samo po stronie klienta w przeglądarce IE 11. IE 11 wymusza na czymś istnienie, więc samo ustawienie wyłączenia powoduje wyświetlenie disabled = ""
Robert Achmann
1
W HTML5 nie ma poprawnej wartości, wszystkie główne przeglądarki tak naprawdę nie dbają o to, jaki jest atrybut, po prostu sprawdzają, czy atrybut istnieje, więc element jest wyłączony.
disabled="false"
nadal wyłączyłby element, ponieważ to OBECNOŚĆdisabled
powoduje wyłączenie, a nie wartość atrybutu.Odpowiedzi:
<input type="text" disabled="disabled" />
jest prawidłowym znacznikiem.<input type="text" disabled />
jest poprawne i używane przez W3C w swoich próbkach.źródło
Specyfikacja HTML5 :
http://www.w3.org/TR/html5/forms.html#eneling-and-disiring-form-controls:-the-disabled-attribute :
http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes :
Wniosek :
Poniższe są prawidłowe, równoważne i prawdziwe :
Poniższe są nieprawidłowe :
Brak atrybutu jest jedyną prawidłową składnią dla fałszu :
Rekomendacje
Jeśli zależy ci na pisaniu poprawnego XHTML, użyj
disabled="disabled"
, ponieważ<input disabled>
jest nieprawidłowy, a inne alternatywy są mniej czytelne. W przeciwnym razie używaj,<input disabled>
ponieważ jest krótszy.źródło
ng-disabled
zamiast tego. Podobnie jak inne atrybuty tego typu, generalnie mają one inteligentnyng-*
odpowiednikdisabled={true}
działa w kodzie JSX reakcji, ale jestem pewien, że zostałby transponowany tylko do jednego z prawidłowych / dozwolonych formatów HTML5.Właśnie wypróbowałem je wszystkie i dla IE11 jedyną rzeczą, która wydaje się działać, jest disabled = „true”. Wartości wyłączenia lub brak podanej wartości nie działały. W rzeczywistości, jsp dostał błąd, który jest równy dla wszystkich pól, więc musiałem określić disabled = "true", aby to zadziałało.
źródło
W HTML5 nie ma poprawnej wartości, wszystkie główne przeglądarki tak naprawdę nie dbają o to, jaki jest atrybut, po prostu sprawdzają, czy atrybut istnieje, więc element jest wyłączony.
źródło