- HTML Forms
- Example
- The Element
- The Element
- Text Fields
- Example
- The Element
- Radio Buttons
- Example
- Checkboxes
- Example
- The Submit Button
- Example
- Example
- Отправка формы в новую вкладку браузера
- Пример:
- Отдельная кнопка
- Скрытая форма
- Html form action print
- Кратко
- Пример
- Как понять
- Как пишется
- Атрибуты
- Подсказки
- Ещё примеры
- На практике
- Николай Лопин советует
- Алёна Батицкая советует
HTML Forms
An HTML form is used to collect user input. The user input is most often sent to a server for processing.
Example
The Element
The HTML element is used to create an HTML form for user input:
The element is a container for different types of input elements, such as: text fields, checkboxes, radio buttons, submit buttons, etc.
All the different form elements are covered in this chapter: HTML Form Elements.
The Element
The HTML element is the most used form element.
An element can be displayed in many ways, depending on the type attribute.
Type | Description |
---|---|
Displays a single-line text input field | |
Displays a radio button (for selecting one of many choices) | |
Displays a checkbox (for selecting zero or more of many choices) | |
Displays a submit button (for submitting the form) | |
Displays a clickable button |
All the different input types are covered in this chapter: HTML Input Types.
Text Fields
The defines a single-line input field for text input.
Example
A form with input fields for text:
This is how the HTML code above will be displayed in a browser:
Note: The form itself is not visible. Also note that the default width of an input field is 20 characters.
The Element
Notice the use of the element in the example above.
The tag defines a label for many form elements.
The element is useful for screen-reader users, because the screen-reader will read out loud the label when the user focuses on the input element.
The element also helps users who have difficulty clicking on very small regions (such as radio buttons or checkboxes) — because when the user clicks the text within the element, it toggles the radio button/checkbox.
The for attribute of the tag should be equal to the id attribute of the element to bind them together.
Radio Buttons
The defines a radio button.
Radio buttons let a user select ONE of a limited number of choices.
Example
A form with radio buttons:
Choose your favorite Web language:
This is how the HTML code above will be displayed in a browser:
Choose your favorite Web language:
Checkboxes
The defines a checkbox.
Checkboxes let a user select ZERO or MORE options of a limited number of choices.
Example
This is how the HTML code above will be displayed in a browser:
I have a bike
I have a car
I have a boat
The Submit Button
The defines a button for submitting the form data to a form-handler.
The form-handler is typically a file on the server with a script for processing input data.
The form-handler is specified in the form’s action attribute.
Example
A form with a submit button:
This is how the HTML code above will be displayed in a browser:
The Name Attribute for
Notice that each input field must have a name attribute to be submitted.
If the name attribute is omitted, the value of the input field will not be sent at all.
Example
This example will not submit the value of the «First name» input field:
Отправка формы в новую вкладку браузера
Иногда возникает вопрос – как отправить HTML-форму в новую вкладку браузера, например для отдельной страницы, где будет печать введённых данных?
Как и у ссылки, у элемента можно применить атрибут target (валидный только в HTML-5), который устанавливает поведение окна, при отправки формы.
_blank | Загружает страницу в новое окно браузера |
_self | Загружает страницу в текущее окно (значение по умолчанию) |
_parent | Загружает страницу во фрейм-родитель, если фреймов нет, то это значение работает как _self |
_top | Отменяет все фреймы и загружает страницу в полном окне браузера, если фреймов нет, то это значение работает как _self . |
Пример:
Минусом является то, что при нажатии любой кнопки type=»submit» форма отправится в новую вкладку браузера.
Отдельная кнопка
Если требуется разделить события кнопок, то можно добавлять атрибут target=»_blank» только при нажатии на кнопку «Распечатать» и после отправки формы его удалять с помощью JQuery.
Скрытая форма
Следующий вариант поможет, когда нужно отправить форму в новую вкладку и на другой URL. В данном примере все поля основной формы копируются в скрытую.
Html form action print
Формы разные нужны, формы разные важны. Без этого тега ни одна форма работать не будет!
Кратко
Скопировать ссылку «Кратко» Скопировано
Тег добавляет на страницу форму, которую пользователь может заполнить. Например, ввести своё имя, фамилию или почту. Данные формы отправляются на сервер.
Пример
Скопировать ссылку «Пример» Скопировано
form action="" method="get"> p> label for="name">Введите имя:label> input type="text" name="name" id="name" required> p> p> label for="email">Введите email:label> input type="email" name="email" id="email" required> p> button type="submit">Отправитьbutton> form>
Как понять
Скопировать ссылку «Как понять» Скопировано
Сайты используют формы, чтобы получить какую-то информацию от пользователя. Это может быть форма заказа в онлайн-магазине или форма обратной связи. Пользователь заполняет поля или выбирает нужную опцию в списке, а после отправки формы эти данные можно обработать.
Как пишется
Скопировать ссылку «Как пишется» Скопировано
Стилизовать можно с помощью CSS.
На странице можно сделать сколько угодно форм. Но одновременно пользователь сможет отправить только одну заполненную форму.
Атрибуты
Скопировать ссылку «Атрибуты» Скопировано
action — здесь указывается ссылка на скрипт, который обработает форму. Это может быть полная URL-ссылка, а может быть относительная, типа html / sendform . Если не указать атрибут action , то страница будет просто обновляться каждый раз, когда отправляется форма.
method — определяет, каким способом будут отправлены на сервер данные, которые ввёл пользователь. Есть два варианта:
- get — ответы пользователя дописываются в URL в формате «параметр=значение», например «email=name@yandex.ru». Выглядит это так: site . com / form ? name = Max&email = name@yandex . ru . То есть параметр — это то, что вы спрашиваете у пользователя, а значение — его ответ. Пары «параметр=значение» разделяются знаком & . Вариант method = «get» используется по умолчанию, но у него есть ограничение: URL не должен получиться длиннее, чем 3000 символов.
- post — данные из формы пакуются в тело формы и отправляются на сервер. В этом случае нет ограничений по объёму данных, поэтому этот способ подойдёт для заполнения базы данных или отправки файлов.
name — уникальное имя формы. Пользователь его не увидит, зато скрипты смогут найти нужную форму. Например, по этому имени, можно получить доступ к форме из коллекции document . forms .
autocomplete — включает или выключает автозаполнение для формы. Браузер может подставить данные, которые пользователь сохранил ранее, например, пароль, номер банковской карты или адрес. Если у пользователя в настройках браузера отключена функция автозаполнения, то этот атрибут уже ни на что не повлияет. Атрибут autocomplete можно задать и для конкретных элементов. Есть два значения:
- on — значение по умолчанию. Включает автозаполнение для этой формы.
- off — выключает автозаполнение. Например, если форма собирает уникальные данные типа капчи («Введите слово с картинки»).
novalidate — у этого атрибута нет значения. Если его добавить, браузер не будет проверять правильность заполнения формы. Например, верно ли введён адрес почты или URL для тегов и соответственно. Обычно браузер проверяет, не пропустили ли вы @ или домен. В том числе, проверяется и заполнение обязательных полей.
enctype — определяет, какой вид кодирования будет применён к данным из формы. Этот атрибут обязательно надо ставить, если через форму отправляются файлы, в остальных случаях — не обязательно. Есть три варианта кодирования:
- application / x — www — form — urlencoded — это значение по умолчанию. Данные будут кодироваться так, что пробелы превратятся в знак + , а символы вроде кириллицы будут представлены в шестнадцатеричном значении. Например, так будет выглядеть имя Степан: % D0 % A1 % D1 % 82 % D0 % B5 % D0 % B F % D0 % B0 % D0 % B D 🤡
- multipart / form — data — вариант, который надо указать, если через форму отправляются файлы. В этом случае данные не кодируются.
- text / plain — в этом случае пробелы меняются на + , а остальные символы передаются без изменений.
accept — charset — задаёт кодировку, в которой сервер принимает данные из формы. Самая распространённая кодировка — UTF — 8 . Можно указать один вариант или несколько. Например, accept — charset = » U T F — 8 Windows — 1251″ . В этом случае названия кодировок нужно разделять пробелами. Здесь можно задать значение по умолчанию: accept — charset = » U N K N O W N» . Тогда кодировка будет такой, какая используется на странице с формой.
Подсказки
Скопировать ссылку «Подсказки» Скопировано
💡 Никогда не используйте method = «get» , если хочется отправить конфиденциальные данные, потому что их можно будет легко прочитать в запросе, который отправляет форма, и даже в адресной строке браузера.
💡 Вариант method = «get» удобен тем, что полученный URL с ответами можно сохранить в закладки. Например, пользователь может заполнить форму и поделиться ссылкой с результатами с кем-нибудь ещё.
Ещё примеры
Скопировать ссылку «Ещё примеры» Скопировано
Имя первого гостя: Имя второго гостя: Rare Medium Well Done
form action="" method="get"> label> Имя первого гостя: input type="text" name="name"> label> button type="submit">Сохранитьbutton> form> form action="" method="post"> label for="post-name"> Имя второго гостя: input id="post-name" type="text" name="name"> label> button type="submit">Сохранитьbutton> form> form action="" method="post"> fieldset> legend>Выберите прожаркуlegend> label> input type="radio" name="level"> Rare label> label> input type="radio" name="level"checked> Medium label> label> input type="radio" name="level"> Well Done label> fieldset> form>
Попробуем отправить данные, которые введёт пользователь, на почту. Для этого вместо URL-ссылки мы пропишем action = «mailto : html@yandex . ru» . Ключевое слово mailto : позволяет отправить что угодно на электронную почту. Не забудьте добавить атрибут enctype = «text / plain» тегу , чтобы письмо отображалось корректно:
Ваше имя Что вы хотите заказать?
form action="mailto:html@yandex.ru" enctype="text/plain"> label> Ваше имя input type="text" name="name" required> label> label> Что вы хотите заказать? input type="text" name="order" required> label> button type="submit">Сделать заказbutton> form>
На практике
Скопировать ссылку «На практике» Скопировано
Николай Лопин советует
Скопировать ссылку «Николай Лопин советует» Скопировано
🛠 Без тега форма не будет работать, но это не всё, что нужно для получения данных. Введённые пользователем данные нужно собирать и отправлять на сервер. Уже на сервере с данными что-то будет происходить: будет отправляться письмо на почту или формировать заказ. За обработку и отправку данных отвечают атрибуты method и action .
Если у тега формы не указывать ни action , ни method , как в примере ниже, то данные никуда не отправятся, а страница перезагрузится:
Имя:
form> label>Имя: input type="text" name="firstName">label> button type="submit">Отправитьbutton> form>
Отправка формы с помощью атрибутов action и method происходит синхронно — браузер отправляет запрос по адресу и рисует на экран все, что вернётся в ответ. Это приводит к полной перезагрузке страницы.
Можно отправлять формы асинхронно, без перезагрузки страницы, но для этого нужно писать JavaScript код, который будет отправлять запрос, получать ответ и обновлять страницу данными из ответа. Читайте, как делать асинхронные формы в статье «Работа с формами» раздела JavaScript.
Алёна Батицкая советует
Скопировать ссылку «Алёна Батицкая советует» Скопировано
🛠 Формы очень часто встречаются на сайтах. С их помощью пользователю предлагается оформить подписку, отправить запрос на цену, записаться на приём к врачу, авторизоваться на сайте и тому подобное.
Посвятите время детальному изучению форм. В том числе тому, как их стилизовать. Это отдельная боль — стилизовать разные поля формы крайне муторно. А чтобы делать это кроссплатформенно, нужно изрядно набить руку.