ฉันจะทำให้การป้อนข้อความไม่สามารถแก้ไขได้อย่างไร


344

ดังนั้นฉันมีการป้อนข้อความ

<input type="text" value="3" class="field left">

นี่คือ CSS ของฉันสำหรับมัน

background:url("images/number-bg.png") no-repeat scroll 0 0 transparent;
border:0 none;
color:#FFFFFF;
height:17px;
margin:0 13px 0 0;
text-align:center;
width:17px; 

มีการตั้งค่าหรือเคล็ดลับเกี่ยวกับเรื่องนี้หรือไม่ฉันกำลังคิดที่จะทำป้ายกำกับแทน ฉันจะแปลงพวกเขาและมีวิธีที่ดีกว่าหรือเป็นวิธีเดียวได้อย่างไร

คำตอบ:


707
<input type="text" value="3" class="field left" readonly>

ไม่จำเป็นต้องใส่สไตล์

ดู<input>ที่ MDN https://developer.mozilla.org/en/docs/Web/HTML/Element/input#Attributes


4
หรืออ่านได้อย่างเดียว = "อ่านได้อย่างเดียว" ถ้าคุณชอบมันเป็นทั้งหมด XML-Y, สเตฟานดูตัวอย่างมุลเลอร์ด้านล่าง :)
Algy เทย์เลอร์

1
@Algy Taylor: ใช่นั่นคือคำตอบดั้งเดิมเมื่อคำถามเดิมมีแท็ก [xhtml] ที่เอาแต่ใจทุกคนที่รู้ว่าอะไรถูกต้องตามมาตรฐาน: /
BoltClock

มีวิธีใดที่จะลบวงกลมสีแดงที่เกิดขึ้นเมื่อคุณโฮเวอร์textareaด้วยreadonlyแอตทริบิวต์?
Chaudhry Waqas

1
@Shafizadeh - ไม่และนั่นเป็นสิ่งที่ดี คงเป็นเรื่องยากสำหรับเบราว์เซอร์ที่จะนำไปใช้อย่างถูกต้องและทำให้ผู้อื่นเข้าใจยาก อย่าพยายามทำให้ตัวควบคุมอย่างง่ายทำงานที่ซับซ้อน แบ่งการป้อนข้อมูลของคุณออกเป็นชิ้น ๆ โดยแต่ละชิ้นจะง่าย (ตัวควบคุมที่แก้ไขได้จากนั้นองค์ประกอบ HTML ที่ไม่สามารถแก้ไขได้และตัวควบคุมอื่นที่สามารถแก้ไขได้)
ToolmakerSteve

1
ตรวจสอบให้แน่ใจด้วยเพื่อตรวจสอบฝั่งเซิร์ฟเวอร์นี้หากคุณไม่ต้องการให้ค่าคงอยู่ มันเป็นเรื่องง่ายในเครื่องมือนักพัฒนาของเบราว์เซอร์ที่จะลบคุณลักษณะซึ่งจะทำให้ฟิลด์อินพุตสามารถแก้ไขได้อีกครั้ง
Kurt Van den Branden


41

คุณสามารถใช้แอreadonlyททริบิวหากคุณต้องการให้อินพุตของคุณเท่านั้นที่จะอ่าน และคุณสามารถใช้แอdisabledททริบิวต์ได้หากคุณต้องการให้อินพุทปรากฏ แต่ปิดการใช้งานโดยสิ้นเชิง (แม้จะใช้ภาษาที่ประมวลผลเช่น PHP จะไม่สามารถอ่านได้)


2
เมื่อคุณส่งแบบฟอร์มไปยังไฟล์ php มันจะไม่อ่านอินพุตที่ปิดใช้งาน อาจเป็นสิ่งที่เขาหมายถึง
Carlos 2W

3
สิ่งที่เกิดขึ้นเป็นประจำว่าอินพุตที่ปิดใช้งานจะไม่ปรากฏเมื่อคุณส่งฟอร์มไม่มีอะไรเกี่ยวข้องกับ php, js หรืออะไร
vasilevich

28

เพียงทำคำตอบให้สมบูรณ์:

องค์ประกอบอินพุตสามารถเป็นแบบอ่านอย่างเดียวหรือปิดใช้งาน (ไม่มีองค์ประกอบใดที่สามารถแก้ไขได้ แต่มีความแตกต่างสองประการ: โฟกัส, ... )

คำอธิบายที่ดีสามารถพบได้ที่นี่:
อะไรคือความแตกต่างระหว่าง disabled =“ disabled” และ readonly =“ readonly” สำหรับช่องป้อนแบบฟอร์ม HTML?

วิธีใช้:

<input type="text" value="Example" disabled /> 
<input type="text" value="Example" readonly />

นอกจากนี้ยังมีการแก้ปัญหาบางอย่างที่จะทำให้มันผ่าน CSS หรือ JavaScript ตามที่อธิบายอยู่ที่นี่


5
หากคุณกำลังจะใช้/>เพื่อปิดแท็กของคุณคุณอาจขยายคุณลักษณะของคุณไปยังdisabled="disabled"และreadonly="readonly"เช่นกัน
BoltClock


3

เพิ่มคุณสมบัติแบบอ่านอย่างเดียว

<input type="text" value="3" class="field left" readonly="readonly" >

หรือ -

<input type="text" value="3" class="field left" readonly>

ไม่จำเป็นต้องใช้ CSS!


22
สิ่งนี้เพิ่มไปยังคำถามที่คำตอบของฉันและคำตอบของสเตฟานจากกว่า 3 ปีก่อนยังไม่ได้? คุณได้สะท้อนถึงคำแถลงของฉันเกี่ยวกับ CSS ที่ไม่ต้องการ
BoltClock

2

คุณต้องเพิ่มปิดการใช้งานในตอนท้าย

<input type="text" value="3" class="field left" disabled>

1
ค่าจะไม่ถูกส่งหากคุณตั้งเป็นปิดใช้งาน อาจเป็นสิ่งที่คุณต้องการ แต่ไม่ใช่สิ่งที่ถูกถาม ตามด้านข้างฉันมาที่นี่อย่างแม่นยำเพราะอินพุต "ปิดใช้งาน" ของฉันไม่ทำงานเหมือนที่ฉันคาด
Balmipour

2

เพิ่มreadonly:

<input type="text" value="3" class="field left" readonly>

ถ้าคุณต้องการที่จะไม่ส่งค่าในแบบฟอร์มให้เพิ่มdisabledแอตทริบิวต์แทน

<input type="text" value="3" class="field left" disabled>

ไม่มีวิธีใช้ CSS ที่ใช้งานได้ตลอดเวลา

ทำไม? CSS ไม่สามารถ "ปิดการใช้งาน" อะไรก็ได้ คุณยังสามารถปิดการแสดงผลหรือการมองเห็นและการใช้งานpointer-events: noneแต่pointer-eventsไม่สามารถใช้งานได้กับ IE เวอร์ชันที่ออกมาเร็วกว่า IE 11


0

หากคุณต้องการใช้CSSจริงๆให้ใช้คุณสมบัติต่อไปนี้ซึ่งจะทำให้ฟิลด์ไม่สามารถแก้ไขได้

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