czy to autofokus = „autofokus” czy autofokus?

87

Wydaje mi się, że większość (może wszystkie) atrybuty we wcześniejszych wersjach HTML (przed HTML5) wymagały atrybutów, aby miały wartości, takie jak readonly="readonly".

Czy to prawda w przypadku HTML5 i autofocusatrybutu?

Darryl Hein
źródło
1
możliwy duplikat stackoverflow.com/questions/1033944/… ponieważ oba dotyczą atrybutów logicznych (nie oflagowane)
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
Zgodziłbym się, że są podobne, ale nieco inne, ponieważ pytają o różne cechy.
Darryl Hein
1
działa tylko autofokus. przetestowałem to w FF, Opera i Chrome ..
Sohail Arif

Odpowiedzi:

94

W HTML używasz atrybutów logicznych z wartościami lub bez, jak chcesz. Wartość logiczna, dla W3C, jak autofocus może być napisany tak autofocuslub autofocus="autofocus"czy również autofocus="".

Jeśli nie chcesz autofokusa, po prostu go nie pisz.

Myślę, że są zdezorientowani, ponieważ XHTML wymaga wartości dla wszystkich atrybutów: attributes="values".

Oto kilka informacji na temat użycia atrybutów logicznych w HTML: http://www.whatwg.org/specs/web-apps/current-work/multipage/common-microsyntaxes.html#boolean-attribute

Tim
źródło
19
+1 za wzmiankę o XHTML. Zgodność XHTML z XML jest jedynym powodem, dla którego kiedykolwiek istniał plik disabled="disabled". To samo dotyczy zamykania tagów. W HTML nie każdy tag musi być zamknięty (np. Br lub input), ale ponieważ XHTML musi być poprawnym XML-em, potrzebujesz również znaczników zamykających.
Tim Büthe
4
„XHTML to jedyny powód, dla którego kiedykolwiek istniał disabled="disabled"”. A SGML jest jedynym powodem, dla którego XHTML ma silly="silly"składnię bool zamiast just whatever="true", a HTML jest jedynym powodem, dla którego this="false"może to oznaczać = true. :)
Sz.
52

Cytując specyfikację HTML5 i rozwijając nieco na Pekce:

http://www.w3.org/TR/html5/forms.html#autofocusing-a-form-control:-the-autofocus-attribute :

Atrybut autofocus jest atrybutem logicznym.

http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes :

Obecność atrybutu logicznego 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 ani końcowych białych znaków.

Wniosek :

Poniższe są prawidłowe, równoważne i prawdziwe :

<input type="text" autofocus />
<input type="text" autofocus="" />
<input type="text" autofocus="autofocus" />
<input type="text" autofocus="AuToFoCuS" />

Poniższe są nieprawidłowe :

<input type="text" autofocus="0" />
<input type="text" autofocus="1" />
<input type="text" autofocus="false" />
<input type="text" autofocus="true" />

Brak atrybutu jest jedyną prawidłową składnią dla fałszu :

<input type="text"/>

Rekomendacje

Jeśli zależy ci na pisaniu poprawnego XHTML, użyj autofocus="autofocus", ponieważ <input autofocus>jest nieprawidłowy, a inne alternatywy są mniej czytelne. W przeciwnym razie używaj, <input autofocus>ponieważ jest krótszy.

Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
źródło
1
„Jeśli zależy Ci na… XHTML”. Nie. Niech umrze.
Dem Pilafian
22

Nie , wystarczy określić sam atrybut. Tak było również w HTML 4 .

Wiele atrybutów to atrybuty logiczne . Obecność atrybutu logicznego 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 ani końcowych białych znaków.

Przykład:

<label><input type=checkbox checked name=cheese disabled> Cheese</label>
Pekka
źródło
10
Dał Timowi zaakceptowaną odpowiedź ... potrzebuje przedstawiciela bardziej niż ty :)
Darryl Hein