Як зробити введення тексту не редагованим?


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
або readonly = "readonly", якщо вам подобається, що це все XML-y, дивіться приклад Стефана Мюллера нижче :)
Algy Taylor

1
@Algy Taylor: Так, це було в оригінальній відповіді, коли в оригінальному запитанні був відмітний тег [xhtml], який підводив усіх горіхів, щодо яких діє дійсний стандарт: /
BoltClock

чи є спосіб , щоб видалити цей червоний коло , який з'являється при наведенні курсору миші textareaз readonlyатрибутом?
Chaudhry Waqas

1
@Shafizadeh - Ні, і це добре. Браузерам буде важко правильно реалізовувати та незрозуміло розуміти людей. не намагайтеся зробити простий елемент управління складним завданням. Розбийте свої дані на частини, кожен фрагмент простий (можна редагувати елемент керування, потім HTML-елемент, який не можна редагувати, потім інший елемент редагування).
ToolmakerSteve

1
Також не забудьте перевірити цю сторону сервера, якщо ви не хочете, щоб значення зберігалося. У інструменті розробника браузера легко видалити атрибут, який, на свою чергу, робить поле введення знову редагованим.
Курт Ван ден Бранден


41

Ви можете використовувати readonlyатрибут, якщо ви хочете, щоб ваш текст був лише прочитаним. І ви можете використовувати disabledатрибут, якщо ви хочете, щоб показ відображався, але повністю відключений (навіть мови обробки, такі як PHP, не зможете їх читати).


2
Коли ви надсилаєте форму до файлу php, він не буде читати відключені введення. Це може бути те, що він мав на увазі.
Carlos2W

3
Що фактично трапляється, це те, що відключені входи НЕ ВІДПОВІДАЮТЬ, коли ви подаєте форму, не має нічого спільного з php, js або чим-небудь.
васілевич

28

Просто для заповнення доступних відповідей:

Елемент введення може бути або лише прочитаний, або відключений (жоден з них не можна редагувати, але є кілька відмінностей: фокус, ...)

Хороше пояснення можна знайти тут:
Яка різниця між відключеними = “відключена” та readonly = “лише для читання” для полів введення HTML-форми?

Як користуватись:

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

Існує також кілька рішень, щоб зробити це через CSS або JavaScript, як пояснено тут .


5
Якщо ви збираєтеся використовувати />теги, ви можете також розширити свої атрибути disabled="disabled"і до readonly="readonly".
BoltClock


3

додайте атрибут readonly

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

або -

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

не потрібно CSS!


22
Що це додає до питання, що моєї відповіді та відповіді Стефана за останні три роки раніше ще не було? Ви навіть віддзеркалювали моє твердження про те, що CSS не потрібен.
BoltClock

2

потрібно лише додати інвалід наприкінці

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

1
Значення не подається, якщо ви встановили його на вимкнено. Це може бути те, що вам потрібно, але це не те, що просили. Як зауваження, я прийшов сюди саме тому, що мій "інвалід" не поводився так, як я очікував
Балміпур

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;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.