Làm cách nào để nhập văn bản không thể chỉnh sửa?


344

Vì vậy, tôi có một văn bản nhập

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

Đây là CSS của tôi cho nó

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; 

Có một thiết lập hoặc một mẹo cho việc này, tôi đã nghĩ đến việc làm một nhãn thay thế nhưng về kiểu dáng. Làm thế nào để tôi chuyển đổi chúng và có cách nào tốt hơn hay đó là cách duy nhất?

Câu trả lời:


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

Không cần tạo kiểu.

Xem <input>trên MDN https://developer.mozilla.org/en/docs/Web/HTML/Euity/input#Attribut


4
hoặc readonly = "readonly" nếu bạn thích nó là tất cả XML-y, xem ví dụ của Stephan Muller bên dưới :)
Algy Taylor

1
@Algy Taylor: Vâng, đó là trong câu trả lời ban đầu khi câu hỏi ban đầu có thẻ [xhtml] bướng bỉnh khiến mọi người không hài lòng về tiêu chuẩn nào: /
BoltClock

Có cách nào để loại bỏ vòng tròn màu đỏ xuất hiện khi bạn di chuột qua textareavới readonlythuộc tính không?
Chaudhry Waqas

1
@Shafizadeh - Không, và đó là một điều tốt. Sẽ khó cho các trình duyệt thực hiện chính xác và gây nhầm lẫn cho mọi người hiểu. đừng cố làm cho một điều khiển đơn giản thực hiện một nhiệm vụ phức tạp. Chia đầu vào của bạn thành từng mảnh, với mỗi phần đơn giản (một điều khiển có thể chỉnh sửa, sau đó là một phần tử HTML không thể chỉnh sửa, sau đó là một điều khiển có thể chỉnh sửa khác).
ToolmakerSteve

1
Ngoài ra, hãy đảm bảo kiểm tra phía máy chủ này nếu bạn không muốn giá trị được duy trì. Công cụ dành cho nhà phát triển của trình duyệt có thể dễ dàng loại bỏ thuộc tính, đến lượt nó làm cho trường đầu vào có thể chỉnh sửa lại.
Kurt Van den Branden


41

Bạn có thể sử dụng readonlythuộc tính, nếu bạn muốn đầu vào của bạn chỉ được đọc. Và bạn có thể sử dụng disabledthuộc tính, nếu bạn muốn đầu vào được hiển thị, nhưng hoàn toàn bị vô hiệu hóa (ngay cả các ngôn ngữ xử lý như PHP sẽ không thể đọc được các ngôn ngữ đó).


2
Khi bạn gửi biểu mẫu đến tệp php, nó sẽ không đọc các đầu vào bị vô hiệu hóa. Nó có thể là những gì anh ấy có nghĩa.
Carlos2W

3
Điều không may xảy ra là các đầu vào bị vô hiệu hóa KHÔNG NGAY LẬP TỨC khi bạn gửi biểu mẫu, không liên quan gì đến php, js hoặc bất cứ điều gì.
vasilevich

28

Chỉ cần hoàn thành các câu trả lời có sẵn:

Một yếu tố đầu vào có thể là chỉ đọc hoặc bị vô hiệu hóa (không ai trong số chúng có thể chỉnh sửa được, nhưng có một vài điểm khác biệt: trọng tâm, ...)

Có thể tìm thấy lời giải thích tốt ở đây:
Sự khác biệt giữa khuyết tật = bị vô hiệu hóa và readonly = xóa chỉ đọc đối với các trường nhập dạng HTML?

Cách sử dụng:

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

Ngoài ra còn có một số giải pháp để thực hiện thông qua CSS hoặc JavaScript như được giải thích ở đây .


5
Nếu bạn đang đi để sử dụng />để đóng các thẻ của bạn, bạn cũng có thể mở rộng thuộc tính của bạn để disabled="disabled"readonly="readonly"quá.
BoltClock


3

thêm thuộc tính chỉ đọc

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

hoặc là -

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

không cần css!


22
Điều này thêm gì vào câu hỏi mà câu trả lời của tôi và câu trả lời của Stephan từ hơn 3 năm trước chưa có? Bạn thậm chí đã nhân đôi tuyên bố của tôi về CSS không cần thiết.
BoltClock

2

bạn chỉ cần thêm vô hiệu hóa vào cuối

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

1
Giá trị không được gửi nếu bạn đặt nó thành vô hiệu hóa. Nó có thể là những gì bạn cần, nhưng nó không phải là những gì được yêu cầu. Một ghi chú bên lề, tôi đã đến đây chính xác bởi vì đầu vào "bị vô hiệu hóa" của tôi không hoạt động như tôi mong đợi
Balmipour

2

Thêm readonly:

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

Nếu bạn muốn giá trị không được gửi trong một biểu mẫu, thay vào đó hãy thêm disabledthuộc tính.

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

Không có cách nào để sử dụng CSS luôn hoạt động để làm điều này.

Tại sao? CSS không thể "vô hiệu hóa" bất cứ điều gì. Bạn vẫn có thể tắt hiển thị hoặc hiển thị và sử dụng pointer-events: nonenhưng pointer-eventskhông hoạt động trên các phiên bản IE xuất hiện sớm hơn IE 11.


0

nếu bạn thực sự muốn sử dụng CSS , hãy sử dụng thuộc tính sau sẽ làm cho trường không thể chỉnh sửa được.

pointer-events: none;

Ô ô ô. Điều này không hoạt động trong một số trình duyệt.
zixuan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.