Конспект «Формы. Знакомство». Раздел 1
Чтобы создать форму, нужно использовать парный тег <form>, внутри которого размещаются поля формы. У тега <form> есть два важных атрибута:
actionзадаётURL, адрес для отправки формы;methodзадаёт метод отправки формы.
Пример:
<form action="https://echo.htmlacademy.ru/courses" method="get">
поля формы
</form>Для отправки формы обычно используют методы get или post. Если не указать атрибут method, то будет использован get.
Метод get посылает данные формы в строке запроса, то есть они видны в адресной строке браузера и следуют после знака вопроса.
Метод post посылает данные в теле HTTP-запроса и используется, когда нужно отправить много данных и ссылка на результат обработки этих данных не нужна.
Текстовое поле ввода
Большинство полей форм создаётся с помощью одиночного тега <input>. У этого тега два обязательных атрибута:
typeзадаёт тип поля;nameзадаёт имя поля.
От типа поля зависит то, как оно будет отображаться и вести себя. Самый распространённый тип — это text, который обозначает текстовое поле. Данный тип используется по умолчанию.
Для того, чтобы правильно обработать данные на сервере нужно имя поля. Обычно, имя поля должно быть уникальным в пределах формы. Для задания имени поля используют латинские буквы и цифры.
Идентификатор и значение по умолчанию
Атрибут id поля ввода обозначает идентификатор. Он должен быть уникальным на всей странице.
Обычно идентификаторы используют для повышения удобства работы с формой, например, создают подписи, связанные с мелкими полями. При нажатии на такие подписи активируется связанное поле. Также идентификаторы используют в JavaScript для работы с полями.
Идентификатор не передаётся на сервер. Лучше использовать идентификаторы, отличающиеся от имени поля.
Атрибут value задаёт значение поля ввода по умолчанию.
Подпись для поля ввода
Парный тег <label> создаёт подпись к полю формы.
Он связывает текст и поле ввода логически. Если нажать на текст в такой подписи, то курсор переместится в соответствующее поле.
Первый способ создать подпись — просто обернуть текст подписи и тег поля в тег <label>, вот так:
<label>
Подпись <input type="text" name="username">
</label>При оборачивании текста в тег <label> он визуально никак не меняется.
Связь подписи и поля по id
Можно связать подпись с полем с помощью атрибута id. Алгоритм такой:
- Добавляем к полю ввода идентификатор с помощью атрибута
id; - Оборачиваем текст подписи в тег
<label>; - Добавляем тегу
<label>атрибутfor; - В атрибут
forзаписываем такое же значение, что и в атрибутеidу поля.
Например:
<label for="user-field-id">Имя пользователя</label>
...
много-много других тегов
...
<input id="user-field-id" type="text" name="username">Поле ввода пароля
Чтобы сделать поле для ввода пароля, в котором текст будет отображаться «звёздочками», нужно изменить значение атрибута type на password.
Кнопка отправки формы
Кнопка для отправки формы создаётся с помощью тега <input> c типом submit.
Надпись на кнопке можно задать с помощью атрибута value. Для кнопки отправки формы задавать имя необязательно, но если оно задано, то на сервер будут отправляться имя и значение кнопки. Обычно имя для кнопки отправки задают, когда в форме несколько кнопок, отвечающих за разные действия.
Многострочное поле ввода
Многострочное текстовое поле создаётся с помощью парного тега <textarea>. У него есть атрибуты name и id, аналогичные атрибутам текстового поля.
Атрибут rows принимает целочисленное значение и задаёт высоту многострочного поля в строках. Атрибут cols задаёт ширину поля в символах. В качестве ширины символа берётся некоторая «усреднённая ширина».
Атрибут value у многострочного поля отсутствует. Текст, расположенный между открывающим и закрывающим тегом <textarea> является значением по умолчанию.
Чекбокс
Чекбокс — это тег <input> с типом checkbox.
Он работает по принципу «либо да, либо нет». Если галочка стоит, то браузер посылает переменную с именем поля на сервер, если галочки нет, то не посылается ничего. Атрибут value не является обязательным.
Чтобы поле было отмечено по умолчанию, нужно добавить к тегу атрибут checked.
Имена чекбоксов в рамках одной формы должны быть разными, так как чекбокс не подразумевает выбор одного элемента из нескольких.