You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: html/readonly/index.md
+83-29
Original file line number
Diff line number
Diff line change
@@ -3,63 +3,117 @@ title: "Атрибут `readonly`"
3
3
description: "Этим атрибутом помечают поля формы, которые доступны только для чтения."
4
4
authors:
5
5
- tanugladkih
6
+
- teplostanski
6
7
related:
7
8
- js/boolean
8
9
- html/form
9
10
- css/pseudoclasses
10
11
tags:
11
12
- doka
12
-
- placeholder
13
13
---
14
14
15
15
## Кратко
16
16
17
-
Атрибут `readonly`добавляется полям формы, которые пользователь не сможет редактировать. Они будут доступны только для чтения.
17
+
Атрибут `readonly`делает поля формы доступными только для чтения. Пользователь не сможет изменить значение такого поля, но сможет выделить и скопировать текст.
18
18
19
19
## Пример
20
20
21
-
В данном примере нельзя отредактировать дату своего рождения:
Иногда нужно показать пользователю информацию в поле формы, но при этом запретить её редактирование. Например:
40
+
41
+
- отображение данных из профиля, которые нельзя изменить;
42
+
- показ результатов расчётов;
43
+
- демонстрация значений по умолчанию.
44
+
45
+
В таких случаях пригодится атрибут `readonly`.
46
+
47
+
Этот атрибут позволяет:
48
+
49
+
- выделять и копировать текст;
50
+
- полю ввода получать фокус с клавиатуры;
51
+
- отправлять данные из поля ввода на сервер;
52
+
- стилизовать элемент через CSS при помощи псевдокласса.
53
+
54
+
<iframetitle="Поля только для чтения"src="demos/"height="500"></iframe>
55
+
32
56
## Как пишется
33
57
34
-
Атрибут `readonly`булевый, его можно добавить со значением: `readonly="readonly"`, или без него — `<input type="text" readonly>`.
58
+
`readonly`— это булевый атрибут, поэтому его можно записать двумя способами:
35
59
36
-
Атрибут `readonly` можно использовать для [`<textarea>`](/html/textarea/) и [`<input>`](/html/input/) со следующими типами:
60
+
```html
61
+
<!-- Полная запись -->
62
+
<inputreadonly="readonly">
63
+
<!-- Сокращённая запись -->
64
+
<inputreadonly>
65
+
```
37
66
38
-
-`text`,
39
-
-`search`,
40
-
-`url`,
41
-
-`tel`,
42
-
-`email`,
43
-
-`password`,
44
-
-`date`,
45
-
-`month`,
46
-
-`week`,
47
-
-`time`,
48
-
-`datetime-local`,
49
-
-`number`.
67
+
В ARIA есть атрибут [`aria-readonly`](/a11y/aria-readonly/), который делает то же самое. Но лучше использовать нативный атрибут HTML, а ARIA применять только для элементов, где `readonly` не поддерживается:
50
68
51
-
Не используется:
69
+
```html
70
+
<!-- ARIA для кастомных элементов -->
71
+
<custom-inputaria-readonly="true">
72
+
Нередактируемый текст
73
+
</custom-input>
74
+
```
52
75
53
-
- с тегом [`<select>`](/html/select/);
54
-
- с любым типом кнопок (даже если это изображение);
55
-
- если у поля есть атрибут [`hidden`](/html/hidden/).
76
+
### Где можно использовать
56
77
57
-
Также для полей с атрибутом `readonly`не сработает атрибут [`required`](/html/required/).
78
+
Атрибут `readonly`работает с:
58
79
59
-
## Как понять
80
+
-[`<textarea>`](/html/textarea/)
81
+
-[`<input>`](/html/input/) следующих типов:
82
+
-`text`
83
+
-`search`
84
+
-`url`
85
+
-`tel`
86
+
-`email`
87
+
-`password`
88
+
-`date`
89
+
-`month`
90
+
-`week`
91
+
-`time`
92
+
-`datetime-local`
93
+
-`number`
94
+
95
+
### Где не работает
96
+
97
+
Атрибут `readonly` нельзя использовать с:
98
+
99
+
-[`<select>`](/html/select/)
100
+
- любыми типами кнопок в `<input>`
101
+
- полями с атрибутом [`hidden`](/html/hidden/)
60
102
61
-
Есть разница между [`disabled`](/html/disabled/) и `readonly`. Так, поля, доступные только для чтения (`readonly`), по-прежнему могут получать фокус и будут отправляться вместе с формой в отличие от неактивных полей (`disabled`).
103
+
Также поле с `readonly` нельзя сделать обязательным через [`required`](/html/required/).
62
104
63
105
## Подсказки
64
106
65
-
💡 Поле с атрибутом `readonly` можно стилизовать при помощи псевдокласса `:read-only`, а поля без этого атрибута - `:read-write`.
107
+
💡 Не путайте `readonly` с [`disabled`](/html/disabled/). Неактивные поля (`disabled`) не получают фокус и не отправляются с формой, а поля только для чтения (`readonly`) — получают и отправляются.
108
+
109
+
💡 Для стилизации полей с `readonly` используйте псевдокласс [`:read-only`](/css/read-only/), а для редактируемых полей — [`:read-write`](/css/read-write/).
110
+
111
+
💡 В JavaScript можно проверить, доступно ли поле для редактирования, через свойство `readOnly`:
112
+
113
+
💡 Поля с `readonly` всё ещё можно изменить через JavaScript или инструменты разработчика. Не используйте этот атрибут для защиты важных данных.
114
+
115
+
💡 Хотя поле с `readonly` можно выделить и получить на него фокус, пользователи не могут изменить его значение с клавиатуры.
116
+
117
+
💡 При отправке формы поля с `readonly` передаются на сервер, в отличие от полей с `disabled`.
118
+
119
+
💡 Атрибут `readonly` не влияет на события поля. Можно использовать все события, как с обычным полем.
0 commit comments