- Формы в HTML
- Текстовые поля
- placeholder
- Флажки
- Переключатели
- Разница между переключателями и флажками
- Выпадающие меню
- Множественный выбор из выпадающего меню
- Пример: полная форма регистрации
- Формы и поля в HTML. Все о HTML формах
- Создание формы в HTML
- Пример HTML формы обратной связи
- HTML код формы обратной связи
- Стилевое оформление формы
- Элементы (поля) формы html. Основные типы полей
- Обработка HTML формы на сервере
- Код простого PHP обработчика формы обратной связи
Формы в HTML
В процессе навигации по сайтам пользователь, в основном, только щёлкает по ссылкам чтобы перемещаться по веб-страницам.
Но понятно, что пользователю иногда требуется обеспечить собственные поля ввода. Эти виды взаимодействия включают в себя:
- регистрацию и вход на сайтах;
- ввод личной информации (имя, адрес, данные кредитной карты и др.);
- фильтрацию контента (с помощью выпадающих списков, флажков и др.);
- выполнение поиска;
- загрузку файлов.
Чтобы приспособиться к этим потребностям, HTML предлагает интерактивные элементы управления формы:
- текстовые поля (для одной или нескольких строк);
- переключатели;
- флажки;
- выпадающие списки;
- виджеты для загрузки;
- кнопки отправки.
Эти элементы управления задействуют разные теги HTML, но большинство из них использует тег . Поскольку это самозакрывающий элемент, тип поля определяется его атрибутом type :
Элемент
является блочным элементом, который определяет интерактивную часть веб-страницы. Как результат, все элементы управления (такие как , или ) должны находиться внутри элемента .
Два атрибута HTML необходимы:
- action содержит адрес, который определяет, куда будет отправлена информация формы;
- method может быть либо GET, либо POST и определяет, как будет отправлена информация формы.
Как правило, информация формы посылается на сервер. Как эти данные затем будут обработаны выходит за рамки данного руководства.
Подумайте о форме как о наборе элементов управления, которые работают вместе, чтобы выполнить одну операцию. Если вы написали форму входа на сайт, у вас могло быть три поля:
Эти три элемента HTML будут заключены внутри одной формы .
Вы можете аналогично добавить форму регистрации на той же HTML-странице, в отдельном элементе .
Текстовые поля
Почти всем формам требуется текстовый ввод от пользователей, чтобы ввести своё имя, адрес электронной почты, пароль, адрес и др. Текстовые поля формы приходят в разных вариантах.
Текст | Допускает любой тип символов | |
---|---|---|
Может показывать предупреждение, если введён неверный email | ||
Пароль | Символы показываются как точки | |
Число | Могут быть использованы клавиши вверх/вниз | |
Телефон | Может сработать автозаполнение | |
Многострочный текст | Может быть изменён размер поля |
Хотя эти поля очень похожи и позволяют пользователям вводить текст любого рода (даже неправильный), их тип обеспечивает специфическую семантику для ввода, определяя, какую информацию поле должно содержать.
Браузеры могут впоследствии немного изменить интерфейс элемента управления, чтобы повысить интерактивность или подсказать, какое содержимое ожидается.
К примеру, поле для пароля показывает точки вместо символов. А поле для чисел позволяет увеличивать/уменьшать значение с помощью клавиш вверх и вниз.
placeholder
Текстовые поля могут отображать подсказывающий текст, который исчезнет, как только будет введён некоторый текст.
Если вы начинаете набирать что-то, то увидите как текст «Введите своё имя» исчезнет.
Так как элементы формы сами по себе не очень описательны, им, как правило, предшествует текстовая метка.
В то время как placeholder уже обеспечивает некоторую подсказку о том, какое ожидается содержание, метки имеют преимущество оставаясь видимыми в любое время и могут использоваться наряду с другими типами элементов формы, таких как флажки или переключатели.
Хотя вы можете применять короткие абзацы для описания элементов формы, использование является семантически более правильным, потому что они существуют только в формах. также может быть связан с определённым элементом формы с помощью атрибута for , соответствующему значению id у поля.
При щелчке по метке фокус переходит к текстовому полю и помещает курсор внутрь него. Пока эта связка кажется бесполезной, но пригодится с флажками и переключателями.
Флажки
Флажки — это элементы формы, которые имеют только два состояния: включено или выключено. Они в основном позволяют пользователю сказать: «Да» или «Нет» для чего-то.
Поскольку может оказаться сложно щёлкнуть по небольшому флажку, рекомендуется поместить флажок и его описание внутрь .
Вы можете щёлкнуть по тексту «Я согласен с условиями» чтобы переключить флажок.
По умолчанию флажок выключен. Вы можете пометить его включенным, просто используя атрибут checked .
Переключатели
Вы можете предоставить пользователю список вариантов на выбор с помощью переключателей.
Для работы этого элемента формы, ваш HTML-код должен сгруппировать список переключателей вместе. Это достигается с помощью одного и того же значения для атрибута name:
Поскольку все переключатели используют одинаковое значение атрибута name (в данном случае значение status ), выбор одного из вариантов отменит все остальные. Переключатели являются взаимоисключающими.
Разница между переключателями и флажками
Хотя флажок существует сам по себе, переключатели могут появляться только в виде списка (что означает, по меньшей мере два варианта).
Кроме того, щелчок по флажку является произвольным, в то время как выбор одного из переключателей является обязательным. Вот почему невозможно выключить переключатель, если выбрать ближайший вариант. В конце концов, всегда выбирается один из переключателей.
Выпадающие меню
Если количество вариантов для выбора занимает слишком много места, вы можете воспользоваться выпадающими меню .
Они работают подобно переключателям, отличается только компоновка.
Множественный выбор из выпадающего меню
Если добавить атрибут multiple , вы можете предоставить возможность выбрать несколько вариантов.
Выберите несколько вариантов посредством удержания Ctrl (или ⌘) и щелчка. Это может быть хорошей альтернативой применению несколько флажков в строке.
Пример: полная форма регистрации
Также доступны и другие элементы форм, но мы рассмотрели наиболее используемые.
Формы и поля в HTML. Все о HTML формах
В HTML для создания форм используются теги группы form. К ним относятся:
Каждому из этих тегов посвящена отдельная страница в нашем справочнике. Перейти на нее вы можете, нажав по названию тега.
На этой странице описана практика создания и работы с HTML формами с примером исходного кода и описанием на русском языке.
Создание формы в HTML
Для того чтобы создать простую HTML форму, нужно поместить в код страницы тег и разместить внутри него элементы формы.
Элементы формы (другое название — поля) формируются с помощью тегов группы form. Основные типы элементов описаны ниже на этой странице. Подробное описание всех типов полей форм находится на страницах тегов соответствующих элементов.
Для примера создадим форму обратной связи. Стандартная форма обратной связи HTML содержит следующие элементы: список выбора тематики, текстовые поля для ввода имени, контакта (например, email) и текстовую область для ввода сообщения.
Пример HTML формы обратной связи
HTML код формы обратной связи
Рассмотрим подробно код формы.
Существует 2 метода передачи данных формы на сервер: GET и POST. Используя метод GET, данные будут переданы в виде пар «имя-значение» в URL адресе обработчика. В случае использования метода POST данные передаются скрыто. Их можно увидеть только с помощью специальных инструментов, открыв HTTP запрос. Подробное описание методов GET и POST и о том, когда нужно использовать каждый из методов читайте в статье: Методы GET и POST: использование и отличия.
Атрибут action содержит URL обработчика формы — по этому адресу будет отправлена форма после наступления события submit (submit — событие отправки формы).
Каждый элемент cодержит атрибут name . При отправке формы, значения введенные пользователем будут переданы в переменных с именами указанными в этом атрибуте. Атрибут type определяет тип элемента . Атрибут required делает элемент обязательными для заполнения. Форма не будет отправлена, пока пользователь не заполнит все обязательные элементы.
Стилевое оформление формы
Для оформления формы обратной связи, приведенной выше, были использованы несколько стилей CSS. Оформление не влияет на работу формы, однако, если вы хотите чтобы ваша форма выглядела также как форма из примера, воспользуйтесь CSS правилами, приведенными ниже.
Код CSS для базового оформления HTML формы обратной связи из примера выше:
.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;
>
Элементы (поля) формы html. Основные типы полей
В таблице ниже представлены основные типы элементов формы (полей). Подробную информацию о каждом элементе вы можете просмотреть на отдельной странице тега.
По умолчанию текстовое поле может принимать любые текстовые значение. Дополнительные ограничения могут быть установлены в теге (атрибут pattern), либо с помощью JavaScript.
Браузеры обычно отображают возле поля календарь, с помощью которого можно заполнить поле.
Существует несколько типов полей, содержащих данные о дате и времени:
- date — дата (число, месяц, год);
- datetime-local — дата и время (число, месяц, год, часы, минуты);
- month — месяц конкретного года (например: январь, 2004г);
- week — неделя конкретного года (например: неделя 32, 2001г).
В поле типа password введенное значение будет заменено символьной маской.
В поля из этой группы можно вводить только подходящее к типу поля содержимое.
Поля с указанным типом содержимого:
- email — поле для ввода адреса электронной почты;
- number — поле для ввода чисел;
- password — поле для ввода пароля;
- search — поле для ввода поискового запроса;
- tel — поле для ввода номера телефона;
- url — поле для ввода URL адреса.
Текстовая область может принимать в виде значения многострочный текст.
Чек-бокс представляет собой поле, в котором можно сделать отметку.
Элемент «переключатель» позволяет выбрать один из доступных вариантов.
При клике на список пользователю откроются доступные для выбора варианты.
Пользователь может выбрать сразу несколько вариантов из этого списка.
С помощью этого элемента пользователь может прикрепить к форме файл.
Для создания кликабельной кнопки можно использовать тег либо тег .
Отличие в возможности формировать название кнопки, сделанной тегом , с помощью HTML тегов.
Типы кнопок (определяются атрибутом type):
- button — простая кнопка. Действие, которое будет выполнено при нажатии кнопки, определяется через JavaScript;
- submit — кнопка отправки формы;
- reset — кнопка очистки полей формы.
Обработка HTML формы на сервере
После отправки формы данные передаются на сервер в виде параметров запроса.
Дальнейшая обработка формы осуществляется с помощью программного кода обработчика, указанного в атрибуте action формы.
Для создания обработчика понадобится один из доступных языков программирования. Распространенным вариантом является использование PHP обработчиков.
В случае использования PHP обработчика данные формы будут доступны в суперглобальных массивах $_GET и $_POST . Например, данные поля с именем «message», отправленные методом POST, будут доступны как $_POST[‘message’] .
Работа с формами на сервере — это отдельная обширная тема. Об обработке HTML форм на сервере читайте в справочнике по выбранному языку программирования.
Ниже представлен простейший PHP обработчик для формы обратной связи, приведенной выше. Данный обработчик отправляет данные формы на указанный email.
Этот код необходимо разместить на сервере в корневом каталоге сайта в файле feedback.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"
// Если вы изменяли поля формы, внесите изменения ниже
."Тема: ".$_POST['theme']."\r\n"
."Ваше имя: ".$_POST['name']."\r\n"
."Ваш email: ".$_POST['email']."\r\n"
."Сообщение: ".$_POST['message']."\r\n";
$headers = "From: ".$from."\r\nContent-type: text/html; charset=utf-8\r\n";
mail($to, $subject, $message, $headers);
>
?>