Рубрики
html

Конспект: Формы

Ссылки

https://htmlacademy.ru/

Первая форма

Формы нужны для того, чтобы отправлять данные с веб-страницы на веб-сервер, который сможет эти данные обработать: 
зарегистрировать пользователя, 
создать сообщение на форуме, 
отправить письмо 
и так далее. 
В общем, формы в вебе просто необходимы.

Чтобы создать форму, нужно использовать парный тег 
, внутри которого размещаются поля формы. У тега есть два важных атрибута: action задаёт адрес, URL, отправки формы; method задаёт метод отправки формы. Пример: поля формы
Для отправки формы обычно используют методы get или post. Если не указать атрибут method, то будет использован get. Метод get посылает данные формы в строке запроса, то есть они видны в адресной строке браузера и следуют после знака вопроса. Например: https://www.google.com/search?q=htmlacademy Метод get лучше использовать в поисковых формах, потому что он позволяет получить ссылку на результаты поиска и передать её кому-то. Метод post посылает данные в теле HTTP-запроса и используется, когда нужно отправить много данных и ссылка на результат обработки этих данных не нужна. Например, при редактировании личного профиля.

Текстовое поле ввода

Большинство полей форм создаётся с помощью одиночного тега . 

У этого тега два обязательных атрибута:
type задаёт тип поля;
name задаёт имя поля.

Тип поля влияет на то, как оно будет отображаться и вести себя. 
Самый распространённый тип — это text, который обозначает текстовое поле. 
Он же используется по умолчанию. 

Пример:
Имя поля нужно, чтобы правильно обработать данные на сервере. Обычно, имя поля должно быть уникальным в пределах формы, хотя есть исключения. Для задания имени поля используют латинские буквы и цифры.

Идентификатор и значение по умолчанию

Атрибут id поля ввода обозначает идентификатор. 
Он должен быть уникальным не только в пределах формы, но и на всей странице.
Обычно идентификаторы используют для повышения удобства работы с формой, например, создают подписи, связанные с мелкими полями. 
При нажатии на такие подписи активируется связанное поле. 
И это удобно, так как по большой подписи попасть легче, чем по маленькому полю. 
Также идентификаторы используют в JavaScript для работы с полями.

Идентификатор в отличие от имени поля не передаётся на сервер. 
Лучше использовать идентификаторы, отличающиеся от имени поля, 
особенно актуально это для полей множественного выбора.

Атрибут value задаёт значение поля ввода по умолчанию. 
Это тоже повышает удобство.

Согласитесь, приятно зайти в огромную анкету на каких-нибудь госуслугах, 
а там ваши паспортные данные уже подставлены в нужные поля и заполнять их не надо. 
И всё благодаря тому, что программист добавил к полям атрибут value с нужными данными.

Подпись для поля ввода

Можно подумать, что сделать подпись к полю очень просто. 

Пишем текст рядом с полем и всё готово:
Подпись 

На самом деле этого недостаточно — мы получили просто кусок текста и поле, 
которые расположены рядом друг с другом, но логически никак не связаны.
Есть специальный тег, который позволяет смело сказать: 
«Этот кусок текста действительно подпись к этому полю!». 
Это парный тег 

Связываем подпись и поле по id

Иногда обернуть поле и текст подписи в тег 

Поле для ввода пароля

Мы создаём простую форму входа. 
Уже есть два поля и связанные с ними подписи. Одно из полей предназначено для ввода пароля, но сейчас оно является простым текстовым полем.
Чтобы сделать его настоящим полем для ввода пароля, в котором текст будет отображаться «звёздочками», нужно просто изменить значение атрибута type на password.



  
    
    Поле для ввода пароля
    
  
  
    

Форма входа



Кнопка отправки формы

Такая кнопка создаётся с помощью тега  c типом submit.
Надпись на кнопке можно задать с помощью атрибута value. 
Для кнопки отправки формы задавать имя необязательно. 
Но если имя задано, то на сервер будут отправляться имя и значение кнопки.
Обычно имя для кнопки отправки задают, когда в форме несколько кнопок, отвечающих за разные действия. 
Браузер отправляет на сервер имя и значение только той из них, на которую нажал пользователь. 
Таким образом, сервер может понять, какую кнопку нажали и что нужно сделать.





  
    
    Кнопка отправки формы
    
  
  
    

Форма входа





Многострочное поле ввода

Мы научились создавать простейшие формы с текстовыми полями и кнопками. 
А теперь познакомимся с более сложными элементами формы.
Многострочное текстовое поле создаётся с помощью парного тега 

Чекбокс или «галочка»

Поле-галочка — это тег  с типом checkbox.
Галочка работает по принципу «либо да, либо нет». 
Если галочка стоит, то браузер посылает переменную с именем поля на сервер, если галочки нет, то не посылается ничего. 
Таким образом, атрибут value не является обязательным.
Чтобы галочка стояла по умолчанию, нужно добавить к тегу атрибут checked. 

Вот так:


Чекбокс не подразумевает выбор одного элемента из нескольких. 
Поэтому если в одной форме есть несколько чекбоксов, то имена у них должны быть разными.

Переключатель или «радиобаттон»

Поле-переключатель — это тег  с типом radio.
Обычно переключатели размещают группами по несколько штук. 
Причём у переключателей из одной группы должно быть одинаковое имя и разные значения, которые задаются c помощью value.
Таким образом, атрибут value является для переключателей обязательным. 
Браузер отправляет на сервер значение value выбранного переключателя.
В этом задании мы начнём создавать переключатель.


Группа переключателей

Теперь добавим ещё один вариант ответа в наш переключатель. 
Для этого нужно добавить ещё один  с таким же именем, но другим значением value.
Подобным образом можно создавать группы переключателей с любым количеством вариантов.
Чтобы сделать какой-либо вариант в переключателе выбранным по умолчанию, нужно добавить к соответствующему тегу  атрибут checked, как у поля-галочки.
Кстати, имя поля у переключателей одной группы должно быть одинаковым, но идентификаторы всегда должны быть уникальными.


Раскрывающийся список или «селект»

Раскрывающийся список так же, как и переключатель, позволяет выбрать один вариант ответа из нескольких.
Раскрывающийся список создаётся с помощью парного тега . 

Например:


В атрибуте value тега 

«Мультиселект»

Раскрывающийся список можно превратить в так называемый «мультиселект», то есть список, в котором можно выбрать не один, а несколько вариантов.
Чтобы сделать это, нужно добавить к тегу .
Чтобы отметить как выбранные по умолчанию одно или несколько значений, нужно к соответствующим тегам 
        
        
        
        
        
        
      

      
    
  


Поле для загрузки файлов

Поле для загрузки файлов — это тег  с типом file. 
Для этого поля обязательным атрибутом является имя.
Чтобы поле заработало и браузер смог передать выбранный файл на сервер, 
необходимо добавить форме атрибут enctype со значением multipart/form-data. 
Не полю, а форме.

Этот атрибут указывает браузеру, в каком виде пересылать данные. 
Если вы хотите отправить на сервер файл, данные из формы эффективнее всего передавать по частям. 
За это и отвечает значение multipart/form-data.

Кстати, внешний вид полей с типом file очень сильно отличается в зависимости от операционной системы и очень плохо изменяется с помощью стилей.




  
    
    Поле для загрузки файлов
    
  
  
    

Профиль

Выберите изображение для своего аватара:

Скрытое поле

И ещё одно невидимое и очень полезное поле. 
Это скрытое поле. 
Его используют, когда в форме нужно отправить какие-то дополнительные служебные данные, которые не вводятся пользователем.
Например, это могут быть реквизиты заказа или номер пользователя в форме оплаты.

Скрытое поле — это тег  с типом hidden.