ออโต้โฟกัส =“ ออโต้โฟกัส” หรือออโต้โฟกัส?


87

ฉันดูเหมือนจะจำได้มากที่สุด (อาจจะทั้งหมด) คุณลักษณะในรุ่นก่อนหน้านี้ของ HTML (ก่อน HTML5) readonly="readonly"ที่จำเป็นคุณลักษณะที่จะมีค่าเช่น

นี่เป็นความจริงสำหรับ HTML5 และautofocusแอตทริบิวต์หรือไม่


1
เป็นไปได้ที่จะซ้ำกันของstackoverflow.com/questions/1033944/…เนื่องจากทั้งคู่เกี่ยวกับแอตทริบิวต์บูลีน (ไม่ถูกตั้งค่าสถานะ)
Ciro Santilli 郝海东冠状病六四事件法轮功

ฉันยอมรับว่าพวกเขาคล้ายกัน แต่แตกต่างกันเล็กน้อยเนื่องจากพวกเขาถามถึงคุณลักษณะที่แตกต่างกัน
Darryl Hein

1
ออโต้โฟกัสใช้งานได้เท่านั้น ทดสอบใน FF, Opera และ Chrome ..
Sohail Arif

คำตอบ:


94

ใน HTML คุณใช้แอตทริบิวต์บูลีนที่มีหรือไม่มีค่าก็ได้ตามต้องการ บูลีนสำหรับ W3C เช่นออโต้โฟกัสสามารถเขียนได้เช่นนั้นautofocusหรือautofocus="autofocus"หรือแบบautofocus=""นั้นก็ได้

หากคุณไม่ต้องการโฟกัสอัตโนมัติก็อย่าเขียนมัน

ฉันคิดว่าคุณสับสนเพราะ XHTML ต้องการค่าสำหรับแอตทริบิวต์ทั้งหมด: attributes="values"ค่าสำหรับแอตทริบิวต์ทั้งหมด:

ข้อมูลบางส่วนเกี่ยวกับการใช้คุณลักษณะบูลีนใน HTML: http://www.whatwg.org/specs/web-apps/current-work/multipage/common-microsyntaxes.html#boolean-attribute


19
+1 สำหรับการกล่าวถึง XHTML ความสอดคล้อง XML ของ XHTML เป็นเหตุผลเดียวว่าทำไมจึงมีไฟล์disabled="disabled". สิ่งเดียวกันกับการปิดแท็ก ใน HTML ไม่จำเป็นต้องปิดทุกแท็ก (เช่น br หรืออินพุต) แต่เนื่องจาก XHTML ต้องเป็น XML ที่ถูกต้องคุณจึงต้องปิดแท็กด้วย
Tim Büthe

4
"XHTML เป็นเหตุผลเดียวว่าทำไมจึงมีdisabled="disabled"" และ SGML เป็นเหตุผลเดียวทำไม XHTML จึงมีsilly="silly"ไวยากรณ์บูลแทนที่จะเป็น just whatever="true"และ HTML เป็นเหตุผลเดียวว่าทำไมthis="false"ถึงหมายถึงสิ่งนี้ = จริง :)
Sz.

52

อ้างถึงข้อกำหนดHTML5และขยายเล็กน้อยบน Pekka:

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

แอตทริบิวต์ออโต้โฟกัสเป็นแอตทริบิวต์บูลีน

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

การมีแอตทริบิวต์บูลีนในองค์ประกอบแสดงถึงค่าที่แท้จริงและการไม่มีแอตทริบิวต์แสดงถึงค่าเท็จ

หากแอตทริบิวต์มีอยู่ค่าของมันจะต้องเป็นสตริงว่างหรือค่าที่จับคู่แบบไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ของ ASCII สำหรับชื่อมาตรฐานของแอตทริบิวต์โดยไม่มีช่องว่างนำหน้าหรือต่อท้าย

สรุป :

สิ่งต่อไปนี้ถูกต้องเทียบเท่าและเป็นจริง :

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

ต่อไปนี้ไม่ถูกต้อง :

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

การไม่มีแอตทริบิวต์เป็นเพียงไวยากรณ์ที่ถูกต้องสำหรับfalse :

<input type="text"/>

คำแนะนำ

หากคุณสนใจเกี่ยวกับการเขียน XHTML ที่ถูกต้องให้ใช้autofocus="autofocus"เนื่องจาก<input autofocus>ไม่ถูกต้องและทางเลือกอื่น ๆ จะอ่านได้น้อยลง อย่างอื่นก็ใช้<input autofocus>ตามที่สั้นกว่า


1
"ถ้าคุณสนใจ ... XHTML" ไม่ ให้ตายเถอะ.
Dem Pilafian

22

ไม่ได้ระบุแอตทริบิวต์เองก็เพียงพอแล้ว มันเป็นวิธีการที่ยังอยู่ในHTML 4

แอตทริบิวต์จำนวนหนึ่งเป็นคุณลักษณะบูลีนคุณลักษณะแบบบูลการมีแอตทริบิวต์บูลีนในองค์ประกอบแสดงถึงค่าที่แท้จริงและการไม่มีแอตทริบิวต์แสดงถึงค่าเท็จ

หากแอตทริบิวต์มีอยู่ค่าของมันจะต้องเป็นสตริงว่างหรือค่าที่จับคู่แบบไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ของ ASCII สำหรับชื่อมาตรฐานของแอตทริบิวต์โดยไม่มีช่องว่างนำหน้าหรือต่อท้าย

ตัวอย่าง:

<label><input type=checkbox checked name=cheese disabled> Cheese</label>

10
ให้คำตอบที่ยอมรับแก่ทิม ... เขาต้องการตัวแทนมากกว่าคุณ :)
Darryl Hein
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.