ค่าที่ถูกต้องสำหรับแอตทริบิวต์ที่ปิดใช้งานคืออะไร


167

ค่าที่ถูกต้องสำหรับdisabledแอตทริบิวต์สำหรับ textbox หรือ textarea คืออะไร?

ฉันเคยเห็นสิ่งต่อไปนี้เคยใช้มาก่อน:

<input type="text" disabled />
<input type="text" disabled="disabled" />
<input type="text" disabled="true" />

5
แอททริบิวต้องมีค่าแม้สำหรับแอททริบิวที่มีการแสดงตนเพียงบางอย่างก็ต้องทำ disabled="false"จะยังคงปิดการใช้งานองค์ประกอบเพราะมันเป็นสิ่งdisabledที่ทำให้เกิดการปิดการใช้งานไม่ได้มูลค่าของคุณลักษณะ
Marc B

ลิงก์ที่ฉันโพสต์เป็นความคิดเห็นต่อคำตอบของ js1568 ยืนยัน / ชี้แจงสิ่งที่ @Marc B พูด: whatwg.org/specs/web-apps/current-work/multipage/
James Allardice

ซ้ำเป็นไปได้ของstackoverflow.com/questions/1033944/...เพราะทั้งสองมีคุณลักษณะแบบบูล (ไม่ได้ตั้งค่าสถานะ)
โร Santilli郝海东冠状病六四事件法轮功

คำตอบ:


148
  • สำหรับ XHTML <input type="text" disabled="disabled" />เป็นมาร์กอัปที่ถูกต้อง
  • สำหรับ HTML5 <input type="text" disabled />นั้นถูกต้องและใช้โดย W3C ในตัวอย่างของพวกเขา
  • ในความเป็นจริงทั้งสองวิธีทำงานบนเบราว์เซอร์หลักทั้งหมด

15
ใน html5 อินพุตเป็นองค์ประกอบที่เป็นโมฆะและไม่จำเป็นต้องใช้สแลชปิดตัวเอง: w3.org/TR/html5/syntax.html#void-elementsและw3.org/TR/html5/syntax.html#syntax-start- แท็ก
Daniel

1
@Daniel K. ไม่จำเป็นต้องใช้เว้นแต่ว่าทำมาร์กอัป HTML / XML หลายภาษา
Patanjali

108

ข้อมูลจำเพาะ 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 :

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

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

สรุป :

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

<input type="text" disabled />
<input type="text" disabled="" />
<input type="text" disabled="disabled" />
<input type="text" disabled="DiSaBlEd" />

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

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

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

<input type="text" />

คำแนะนำ

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


3
หมายเหตุ: หากคุณใช้ AngularJS และจำเป็นต้องผูกสถานะปิดใช้งานกับตัวแปรคุณสามารถใช้ng-disabledแทน คล้ายกับคุณลักษณะอื่น ๆ เช่นนี้โดยทั่วไปพวกเขาจะมีng-*คู่ที่ชาญฉลาด
jakub.g

5
disabled={true}ทำงานในโค้ด reactX ของ JSJ แต่ฉันแน่ใจว่ามันจะถูกแปลงเป็นรูปแบบ HTML5 ที่ถูกต้อง / ได้รับอนุญาตเท่านั้น
RBT

1

ฉันลองทั้งหมดเหล่านี้และสำหรับ IE11 สิ่งเดียวที่ดูเหมือนจะใช้งานได้คือถูกปิดใช้งาน = "ถูกต้อง" ค่าของปิดใช้งานหรือไม่มีค่าที่กำหนดไม่ได้ผล แท้ที่จริงแล้ว jsp มีข้อผิดพลาดที่จำเป็นสำหรับทุกฟิลด์ดังนั้นฉันต้องระบุ disabled = "true" เพื่อให้มันใช้งานได้


1
คำถามของ OP เกี่ยวกับ HTML (เช่นการควบคุมฝั่งไคลเอ็นต์) คุณกำลังดูตัวควบคุมฝั่งเซิร์ฟเวอร์ สิ่งเหล่านั้นมีอนุสัญญาที่แตกต่างกัน คุณจะสังเกตเห็นความแตกต่างถ้าคุณตรวจสอบเอาต์พุต HTML โดย JSP ของคุณ หากคุณยังมีข้อสงสัยลองเล่นซอนี้ใน IE11
Ruud Helderman

ฉันเห็นสิ่งเดียวกันทางฝั่งไคลเอ็นต์ใน IE 11 IE 11 บังคับให้มีบางสิ่งอยู่ดังนั้นเพียงแค่ตั้งค่าผลลัพธ์ที่ถูกปิดใช้งานใน disabled = ""
Robert Achmann

1

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

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