Формы и поля в HTML. Все о HTML формах

Рейтинг: 5 из 5, голосов 1
+++++

В HTML для создания форм используются теги группы form. К ним относятся:

  • <form> - контейнер формы;
  • <input> - элементы формы (поля) различных типов;
  • <button> - кликабельная кнопка;
  • <select> - выпадающий список, список с множественным выбором;
  • <option> - пункт списка;
  • <optgroup> - группа пунктов;
  • <datalist> - список предопределенных вариантов;
  • <textarea> - текстовая область;
  • <label> - подпись, метка поля;
  • <fieldset> - группа полей;
  • <legend> - название группы полей;
  • <output> - результат вычислений.

Каждому из этих тегов посвящена отдельная страница в нашем справочнике. Перейти на нее вы можете, нажав по названию тега.

На этой странице описана практика создания и работы с HTML формами с примером исходного кода и описанием на русском языке.

Создание формы в HTML

Для того чтобы создать простую HTML форму, нужно поместить в код страницы тег <form> и разместить внутри него элементы формы.

Тег <form> является корневым элементом HTML формы. Все элементы формы должны находиться внутри тега <form>, либо быть связанными с формой при помощи атрибута form, содержащего идентификатор формы (значение атрибута id тега <form>).

Элементы формы (другое название - поля) формируются с помощью тегов группы form. Основные типы элементов описаны ниже на этой странице. Подробное описание всех типов полей форм находится на страницах тегов соответствующих элементов.

Для примера создадим форму обратной связи. Стандартная форма обратной связи HTML содержит следующие элементы: список выбора тематики, текстовые поля для ввода имени, контакта (например, email) и текстовую область для ввода сообщения.

Пример HTML формы обратной связи

Обратная связь
Тема обращения
Ваше имя
Ваш email
Сообщение

HTML код формы обратной связи

<form class="guruweba_example_form" name="feedback" method="POST" action="/feedback.php">
<div class="guruweba_example_caption">Обратная связь</div>
<div class="guruweba_example_infofield">Тема обращения</div>
<select name="theme" required="required">
<option value="">Выберите вариант</option>
<option>Вопрос по работе сервиса</option>
<option>Помощь в оформлении заказа</option>
<option>Сотрудничество</option>
<option>Пожелания / предложения</option>
</select>
<div>Ваше имя</div>
<input type="text" name="name" required="required">
<div>Ваш email</div>
<input type="email" name="email" required="required">
<div>Сообщение</div>
<textarea name="message"></textarea>
<input type="submit" name="submit_btn" value="Отправить">
</form>

Рассмотрим подробно код формы.

Родительским элементом является тег <form>. Атрибут class определяет название CSS класса для стилизации формы, name - имя формы; method="POST" означает, что данные введенные пользователем будут переданы в теле HTTP запроса.

Существует 2 метода передачи данных формы на сервер: GET и POST. Используя метод GET, данные будут переданы в виде пар "имя-значение" в URL адресе обработчика. В случае использования метода POST данные передаются скрыто. Их можно увидеть только с помощью специальных инструментов, открыв HTTP запрос. Подробное описание методов GET и POST и о том, когда нужно использовать каждый из методов читайте в статье: Методы GET и POST: использование и отличия.

Атрибут action содержит URL обработчика формы - по этому адресу будет отправлена форма после наступления события submit (submit - событие отправки формы).

Внутри тега <form>, помимо текстовых элементов, находятся элементы формы: <select> - список, <input> типов text и email - поля ввода, <textarea> - текстовая область и <input type="submit"> - кнопка отправки формы.

Каждый элемент cодержит атрибут name. При отправке формы, значения введенные пользователем будут переданы в переменных с именами указанными в этом атрибуте. Атрибут type определяет тип элемента <input>. Атрибут required делает элемент обязательными для заполнения. Форма не будет отправлена, пока пользователь не заполнит все обязательные элементы.

Стилевое оформление формы

Для оформления формы обратной связи, приведенной выше, были использованы несколько стилей CSS. Оформление не влияет на работу формы, однако, если вы хотите чтобы ваша форма выглядела также как форма из примера, воспользуйтесь CSS правилами, приведенными ниже.

Код CSS для базового оформления HTML формы обратной связи из примера выше:

<style class="text/css">
.guruweba_example_form {
width: 290px;
}
.guruweba_example_caption {
font-size: 24px;
text-align: center;
}
.guruweba_example_form .guruweba_example_infofield {
margin-top: 10px;
font-weight: bold;
}
.guruweba_example_form select, .guruweba_example_form input, .guruweba_example_form textarea {
width: 100%;
margin: 5px 0;
padding: 5px 15px;
}
</style>

Элементы (поля) формы html. Основные типы полей

В таблице ниже представлены основные типы элементов формы (полей). Подробную информацию о каждом элементе вы можете просмотреть на отдельной странице тега.

Тип элемента Отображение
Текстовое поле

По умолчанию текстовое поле может принимать любые текстовые значение. Дополнительные ограничения могут быть установлены в теге (атрибут pattern), либо с помощью JavaScript.

С помощью тега <datalist> к полю можно добавить список предопределенных вариантов.

Подробнее об элементе

Поля для ввода даты и времени

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

Существует несколько типов полей, содержащих данные о дате и времени:

  • date - дата (число, месяц, год);
  • datetime-local - дата и время (число, месяц, год, часы, минуты);
  • month - месяц конкретного года (например: январь, 2004г);
  • week - неделя конкретного года (например: неделя 32, 2001г).

Подробнее об элементах

Поле с указанным типом содержимого

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

В поле типа password введенное значение будет заменено символьной маской.

Поле для ввода чисел:

В поля из этой группы можно вводить только подходящее к типу поля содержимое.

Поля с указанным типом содержимого:

  • email - поле для ввода адреса электронной почты;
  • number - поле для ввода чисел;
  • password - поле для ввода пароля;
  • search - поле для ввода поискового запроса;
  • tel - поле для ввода номера телефона;
  • url - поле для ввода URL адреса.

Подробнее об элементах

Текстовая область

Текстовая область может принимать в виде значения многострочный текст.

Подробнее об элементе

Чек-бокс

Чек-бокс представляет собой поле, в котором можно сделать отметку.

Подробнее об элементе

Переключатель


Элемент "переключатель" позволяет выбрать один из доступных вариантов.

Подробнее об элементе

Выпадающий список

При клике на список пользователю откроются доступные для выбора варианты.

Подробнее об элементе

Список с множественным выбором

Пользователь может выбрать сразу несколько вариантов из этого списка.

Подробнее об элементе

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

С помощью этого элемента пользователь может прикрепить к форме файл.

Подробнее об элементе

Кнопка

Для создания кликабельной кнопки можно использовать тег <input> либо тег <button>.

Отличие в возможности формировать название кнопки, сделанной тегом <button>, с помощью HTML тегов.

Типы кнопок (определяются атрибутом type):

  • button - простая кнопка. Действие, которое будет выполнено при нажатии кнопки, определяется через JavaScript;
  • submit - кнопка отправки формы;
  • reset - кнопка очистки полей формы.

Подробнее об элементе button

Обработка HTML формы на сервере

После отправки формы данные передаются на сервер в виде параметров запроса.

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

Для создания обработчика понадобится один из доступных языков программирования. Распространенным вариантом является использование PHP обработчиков.

В случае использования PHP обработчика данные формы будут доступны в суперглобальных массивах $_GET и $_POST. Например, данные поля с именем "message", отправленные методом POST, будут доступны как $_POST['message'].

Работа с формами на сервере - это отдельная обширная тема. Об обработке HTML форм на сервере читайте в справочнике по выбранному языку программирования.

Ниже представлен простейший PHP обработчик для формы обратной связи, приведенной выше. Данный обработчик отправляет данные формы на указанный email.

Этот код необходимо разместить на сервере в корневом каталоге сайта в файле feedback.php (в файле, указанном как обработчик формы).

Код простого PHP обработчика формы обратной связи

<?php
// Простейший обработчик формы обратной связи by GuruWeba
// Разместите этот код в файле, который указан как обработчик формы
// Замените адреса email в переменных $to и $from ниже
// Внимание! Данный обработчик не содержит защиты от злоумышленников

if (isset($_POST['submit_btn'])) {
// Email на который будет отправлено письмо
$to = "example@mail.ru";
// Email от имени которого будет отправлено письмо.
// Введите email вашего сайта, либо, в крайнем случае,
// продублируйте email из $to (может не работать)
$from = "example@mail.ru";
$subject = "Новая заявка на сайте"; // Тема присылаемого письма
$message = "На сайте была заполнена форма обратной связи"."\r\n"
// Если вы изменяли поля формы, внесите изменения ниже
."<b>Тема:</b> ".$_POST['theme']."\r\n"
."<b>Ваше имя:</b> ".$_POST['name']."\r\n"
."<b>Ваш email:</b> ".$_POST['email']."\r\n"
."<b>Сообщение:</b> ".$_POST['message']."\r\n";
$headers = "From: ".$from."\r\nContent-type: text/html; charset=utf-8\r\n";
mail($to, $subject, $message, $headers);
}
?>
Оцените, насколько полезна эта страница
+++++
Оставьте комментарий

Отправляя форму, я даю согласие на обработку персональных данных.