HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>HTML-формы - это основной инструмент для создания интерактивных сайтов. Через них происходит регистрация пользователя, добавление в друзья, оплата покупок, фильтрация товара в магазине и тому подобное. В этом уроке мы познакомимся с самым простым типом форм.</p>
1 <p>HTML-формы - это основной инструмент для создания интерактивных сайтов. Через них происходит регистрация пользователя, добавление в друзья, оплата покупок, фильтрация товара в магазине и тому подобное. В этом уроке мы познакомимся с самым простым типом форм.</p>
2 <h2>Поисковые формы</h2>
2 <h2>Поисковые формы</h2>
3 <p>Самые простые формы - поисковые. Они ничего не изменяют и не создают, а используются только для фильтрации данных. Такие формы часто используются в поисковых системах. Аналогичный поиск реализован на Хекслете<a>на странице поиска</a>:</p>
3 <p>Самые простые формы - поисковые. Они ничего не изменяют и не создают, а используются только для фильтрации данных. Такие формы часто используются в поисковых системах. Аналогичный поиск реализован на Хекслете<a>на странице поиска</a>:</p>
4 <p>Так эта форма выглядит в коде:</p>
4 <p>Так эта форма выглядит в коде:</p>
5 <p>Основной элемент формы - это тег &lt;form&gt;. Все элементы формы должны быть вложены в него. У этого тега есть два важных атрибута:</p>
5 <p>Основной элемент формы - это тег &lt;form&gt;. Все элементы формы должны быть вложены в него. У этого тега есть два важных атрибута:</p>
6 <ul><li>action. Здесь можно указать адрес для отправки данных формы. По умолчанию используется адрес текущей страницы</li>
6 <ul><li>action. Здесь можно указать адрес для отправки данных формы. По умолчанию используется адрес текущей страницы</li>
7 <li>method. Он принимает два возможных параметра - get или post, что соответствует HTTP-методам</li>
7 <li>method. Он принимает два возможных параметра - get или post, что соответствует HTTP-методам</li>
8 </ul><p>Значение атрибута method по умолчанию - это get. После отправки формы этим методом, ее данные передаются как параметры запроса.</p>
8 </ul><p>Значение атрибута method по умолчанию - это get. После отправки формы этим методом, ее данные передаются как параметры запроса.</p>
9 <p>Если в форму выше ввести строчку<em>sql</em>и нажать Enter, то браузер откроет страницу по адресу<a>https://ru.hexlet.io/courses?term=sql</a>. Если поделиться такой страницей с другими людьми, они увидят тот же результат. Для элементов формы используются такие теги:</p>
9 <p>Если в форму выше ввести строчку<em>sql</em>и нажать Enter, то браузер откроет страницу по адресу<a>https://ru.hexlet.io/courses?term=sql</a>. Если поделиться такой страницей с другими людьми, они увидят тот же результат. Для элементов формы используются такие теги:</p>
10 <ul><li><a>input</a></li>
10 <ul><li><a>input</a></li>
11 <li><a>button</a></li>
11 <li><a>button</a></li>
12 <li><a>select</a></li>
12 <li><a>select</a></li>
13 <li><a>textarea</a></li>
13 <li><a>textarea</a></li>
14 </ul><p>Благодаря атрибуту type, тег &lt;input&gt; принимает множество различных форм:</p>
14 </ul><p>Благодаря атрибуту type, тег &lt;input&gt; принимает множество различных форм:</p>
15 <ul><li>Множественный выбор checkbox</li>
15 <ul><li>Множественный выбор checkbox</li>
16 <li>Одиночный выбор radio</li>
16 <li>Одиночный выбор radio</li>
17 <li>Кнопка отправки формы submit</li>
17 <li>Кнопка отправки формы submit</li>
18 <li>Поле для ввода пароля password</li>
18 <li>Поле для ввода пароля password</li>
19 <li>Поля для ввода телефона tel или электронной почты email</li>
19 <li>Поля для ввода телефона tel или электронной почты email</li>
20 </ul><h2>Атрибуты поисковых форм</h2>
20 </ul><h2>Атрибуты поисковых форм</h2>
21 <p>У всех элементов формы есть общие и специфические атрибуты.</p>
21 <p>У всех элементов формы есть общие и специфические атрибуты.</p>
22 <p>К общим атрибутам относится имя. Его указание обязательно для всех элементов формы кроме кнопок, потому что имя используется для доступа к содержимому. В примере выше используется текстовое поле с типом search и именем term, именно поэтому после отправки формы в адресе появляется запись<em>?term=sql</em>.</p>
22 <p>К общим атрибутам относится имя. Его указание обязательно для всех элементов формы кроме кнопок, потому что имя используется для доступа к содержимому. В примере выше используется текстовое поле с типом search и именем term, именно поэтому после отправки формы в адресе появляется запись<em>?term=sql</em>.</p>
23 <p>Кроме того, во всех формах почти всегда присутствует кнопка с типом submit, которая отвечает за отправку данных. Имя кнопки задается через атрибут value.</p>
23 <p>Кроме того, во всех формах почти всегда присутствует кнопка с типом submit, которая отвечает за отправку данных. Имя кнопки задается через атрибут value.</p>
24 <p>Посмотрим на пример формы:</p>
24 <p>Посмотрим на пример формы:</p>
25 <p>Кнопку отправки добавлять необязательно. По умолчанию достаточно нажать Enter, и браузер отправит форму на сервер.</p>
25 <p>Кнопку отправки добавлять необязательно. По умолчанию достаточно нажать Enter, и браузер отправит форму на сервер.</p>
26 <p>К общим атрибутам относится атрибут required. Он включает проверку обязательности заполнения на клиенте - например, в браузере. Представим, что пользователь не заполнил элементы с этим атрибутом и пытается отправить форму. В таком случае он увидит сообщение, которое попросит заполнить обязательное поле.</p>
26 <p>К общим атрибутам относится атрибут required. Он включает проверку обязательности заполнения на клиенте - например, в браузере. Представим, что пользователь не заполнил элементы с этим атрибутом и пытается отправить форму. В таком случае он увидит сообщение, которое попросит заполнить обязательное поле.</p>
27 <p>С точки зрения серверной части, никакой формы не существует. Сервер выполняет обычный обработчик, в который приходит типичный запрос с дополнительным набором параметров:</p>
27 <p>С точки зрения серверной части, никакой формы не существует. Сервер выполняет обычный обработчик, в который приходит типичный запрос с дополнительным набором параметров:</p>
28 <p>Последняя деталь в работе поисковых форм - <strong>подстановка текущих значений</strong>.</p>
28 <p>Последняя деталь в работе поисковых форм - <strong>подстановка текущих значений</strong>.</p>
29 <p>Представим, что пользователь ввел какое-то значение в поисковую форму. Когда мы покажем ему страницу результатов, на ней все еще должна быть форма поиска с тем значением, которое пользователь ввел. Так работает большинство сайтов.</p>
29 <p>Представим, что пользователь ввел какое-то значение в поисковую форму. Когда мы покажем ему страницу результатов, на ней все еще должна быть форма поиска с тем значением, которое пользователь ввел. Так работает большинство сайтов.</p>
30 <p>Чтобы реализовать эту возможность, нужно выполнить два действия:</p>
30 <p>Чтобы реализовать эту возможность, нужно выполнить два действия:</p>
31 <ol><li><p>Передать данные в шаблон:</p>
31 <ol><li><p>Передать данные в шаблон:</p>
32 </li>
32 </li>
33 <li><p>Подставить данные в саму форму:</p>
33 <li><p>Подставить данные в саму форму:</p>
34 </li>
34 </li>
35 </ol><p>Теперь все сработает так, как пользователь ожидает: он введет запрос и отправит его, а затем получит страницу с результатами, на которой осталась поисковая форма и сам текст запроса. Можно не беспокоиться, что пользователь попробует ввести JavaScript-код - JTE автоматически предотвращает XSS-атаки.</p>
35 </ol><p>Теперь все сработает так, как пользователь ожидает: он введет запрос и отправит его, а затем получит страницу с результатами, на которой осталась поисковая форма и сам текст запроса. Можно не беспокоиться, что пользователь попробует ввести JavaScript-код - JTE автоматически предотвращает XSS-атаки.</p>