JavaRush /Курсы /Python SELF /Элементы HTML-формы

Элементы HTML-формы

Python SELF
29 уровень , 4 лекция
Открыта

1. Множественный выбор и списки

Формы HTML предлагают множество возможностей для взаимодействия пользователей с веб-страницей. Помимо текстовых полей и кнопок, формы поддерживают элементы множественного выбора и списки, которые позволяют создавать более гибкие и удобные интерфейсы для ввода данных. Сегодня мы с ними и познакомимся.

В HTML формы предоставляют несколько способов для создания элементов с возможностью выбора из списка. Наиболее распространенными элементами для этих целей являются <select> и <option>, а также чекбоксы и радио-кнопки.

Выпадающий список: <select> и <option>

Тег <select> создает выпадающий список, а <option> используется для добавления вариантов внутри этого списка. Пользователь может выбрать один или несколько вариантов из списка.

Одиночный выбор: По умолчанию <select> позволяет выбрать только один вариант.

HTML

<label for="country">Выберите страну:</label>
<select id="country" name="country">
  <option value="ru">Россия</option>
  <option value="us">США</option>
  <option value="de">Германия</option>
</select>
HTML

<label for="country">Выберите страну:</label>
<select id="country" name="country">
<option value="ru">Россия</option>
<option value="us">США</option>
<option value="de">Германия</option>
</select>

Множественный выбор: Если добавить атрибут multiple, пользователь сможет выбрать сразу несколько вариантов, удерживая клавишу Ctrl (на Windows) или Cmd (на Mac) при клике.

HTML

<label for="languages">Выберите языки:</label>
<select id="languages" name="languages" multiple>
  <option value="ru">Русский</option>
  <option value="en">Английский</option>
  <option value="de">Немецкий</option>
</select>
HTML

<label for="languages">Выберите языки:</label>
<select id="languages" name="languages" multiple>
<option value="ru">Русский</option>
<option value="en">Английский</option>
<option value="de">Немецкий</option>
</select>

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

Чекбоксы: <input type="checkbox">

Чекбоксы — это элементы, которые позволяют пользователю выбрать один или несколько вариантов из предложенного списка. Каждый чекбокс создается с помощью тега <input type="checkbox">.

HTML

<label><input type="checkbox" name="interests" value="sports"> Спорт</label>
<label><input type="checkbox" name="interests" value="music"> Музыка</label>
<label><input type="checkbox" name="interests" value="travel"> Путешествия</label>
HTML

<label><input type="checkbox" name="interests" value="sports"> Спорт</label>
<label><input type="checkbox" name="interests" value="music"> Музыка</label>
<label><input type="checkbox" name="interests" value="travel"> Путешествия</label>

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

Радио-кнопки: <input type="radio">

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

HTML

<p>Выберите пол:</p>
<label><input type="radio" name="gender" value="male"> Мужской</label>
<label><input type="radio" name="gender" value="female"> Женский</label>
HTML

<p>Выберите пол:</p>
<label><input type="radio" name="gender" value="male"> Мужской</label>
<label><input type="radio" name="gender" value="female"> Женский</label>

Радио-кнопки удобны для выбора одного из нескольких фиксированных вариантов, таких как «Да» или «Нет», пол, возрастная группа и т.д.

2. Элементы форм разных типов

В HTML существует множество типов <input>, которые предоставляют различные возможности для ввода данных. В дополнение к тем, которые мы уже рассмотрели, есть несколько полезных типов, которые могут улучшить взаимодействие с формами и позволить собирать более точные данные.

Телефон (type="tel")

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

HTML

<label for="phone">Телефон:</label>
<input type="tel" id="phone" name="phone" placeholder="+7 (123) 456-7890">
HTML

<label for="phone">Телефон:</label>
<input type="tel" id="phone" name="phone" placeholder="+7 (123) 456-7890">

Поиск (type="search")

Поле для ввода текста, оптимизированное для поиска. Оно может включать кнопку для очистки текста (в зависимости от браузера), и часто стилизуется иначе, чем обычное текстовое поле.

HTML

<label for="search">Поиск:</label>
<input type="search" id="search" name="search" placeholder="Введите запрос">
HTML

<label for="search">Поиск:</label>
<input type="search" id="search" name="search" placeholder="Введите запрос">

URL (type="url")

Поле для ввода веб-адреса. При попытке отправить форму HTML проверит, что введен правильный формат URL.

HTML

<label for="website">Веб-сайт:</label>
<input type="url" id="website" name="website">
HTML

<label for="website">Веб-сайт:</label>
<input type="url" id="website" name="website">

Дата (type="date")

Поле для выбора даты. На большинстве современных браузеров автоматически появляется календарь.

HTML

<label for="birthday">Дата рождения:</label>
<input type="date" id="birthday" name="birthday">
HTML

<label for="birthday">Дата рождения:</label>
<input type="date" id="birthday" name="birthday">

Цвет (type="color")

Поле для выбора цвета. Открывает палитру цветов.

HTML

<label for="color">Выберите цвет:</label>
<input type="color" id="color" name="color">
HTML

<label for="color">Выберите цвет:</label>
<input type="color" id="color" name="color">

Диапазон (type="range")

Ползунок, который позволяет выбрать числовое значение в заданном диапазоне. Атрибуты min, max и step задают минимальное и максимальное значение, а также шаг изменения.

HTML

<label for="volume">Громкость:</label>
<input type="range" id="volume" name="volume" min="0" max="100" step="5">
HTML

<label for="volume">Громкость:</label>
<input type="range" id="volume" name="volume" min="0" max="100" step="5">

Файл (type="file")

Поле для загрузки файлов. Этот тип позволяет пользователю выбрать файл на своем устройстве и прикрепить его к форме для отправки на сервер. Можно задать атрибут accept, чтобы ограничить допустимые типы файлов (например, только изображения или документы).

HTML
    
<label for="file">Загрузите файл:</label>
<input type="file" id="file" name="file" accept=".jpg, .jpeg, .png, .pdf">
    
  
HTML
    
<label for="file">Загрузите файл:</label>
<input type="file" id="file" name="file" accept=".jpg, .jpeg, .png, .pdf">
    
  

Скрытое поле (type="hidden")

Скрытое поле, которое не отображается на странице и не предназначено для взаимодействия с пользователем. Это поле полезно для передачи данных, которые не нужно показывать, например, идентификаторы, токены и т.д.

HTML

<input type="hidden" name="user_id" value="12345">

Кнопка (type="button")

Обычная кнопка, которая может использоваться для запуска JavaScript-функций или других действий. Этот тип не отправляет форму, в отличие от кнопок типа submit.

HTML
        
          <button type="button" onclick="alert('Вы нажали на кнопку')">Нажми меня</button>
        
      
HTML
        
          <button type="button" onclick="alert('Вы нажали на кнопку')">Нажми меня</button>
        
      

3. Пример

В следующем примере мы создадим форму, которая включает разнообразные типы <input> для различных сценариев ввода:

HTML

<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <title>Дополнительные типы ввода</title>
</head>
<body>
  <form action="/submit" method="post">
    <label for="phone">Телефон:</label>
    <input type="tel" id="phone" name="phone" placeholder="+7 (123) 456-7890" required>

    <label for="search">Поиск:</label>
    <input type="search" id="search" name="search" placeholder="Введите запрос">

    <label for="appt">Выберите время:</label>
    <input type="time" id="appt" name="appt">

    <label for="meeting">Дата и время встречи:</label>
    <input type="datetime-local" id="meeting" name="meeting">

    <label for="month">Месяц и год:</label>
    <input type="month" id="month" name="month">

    <label for="week">Неделя:</label>
    <input type="week" id="week" name="week">

    <label for="volume">Громкость:</label>
    <input type="range" id="volume" name="volume" min="0" max="100" step="10">

    <label for="file">Загрузите файл:</label>
    <input type="file" id="file" name="file" accept=".jpg, .jpeg, .png, .pdf">

    <input type="hidden" name="user_id" value="12345">

    <button type="submit">Отправить</button>
  </form>
</body>
</html>
HTML

<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Дополнительные типы ввода</title>
</head>
<body>
<form action="/submit" method="post">
<label for="phone">Телефон:</label>
<input type="tel" id="phone" name="phone" placeholder="+7 (123) 456-7890" required>

<label for="search">Поиск:</label>
<input type="search" id="search" name="search" placeholder="Введите запрос">

<label for="appt">Выберите время:</label>
<input type="time" id="appt" name="appt">

<label for="meeting">Дата и время встречи:</label>
<input type="datetime-local" id="meeting" name="meeting">

<label for="month">Месяц и год:</label>
<input type="month" id="month" name="month">

<label for="week">Неделя:</label>
<input type="week" id="week" name="week">

<label for="volume">Громкость:</label>
<input type="range" id="volume" name="volume" min="0" max="100" step="10">

<label for="file">Загрузите файл:</label>
<input type="file" id="file" name="file" accept=".jpg, .jpeg, .png, .pdf">

<input type="hidden" name="user_id" value="12345">

<button type="submit">Отправить</button>
</form>
</body>
</html>

Заключение

Дополнительные типы <input> в HTML позволяют создавать формы с учетом конкретных потребностей пользователей и типов данных. Благодаря этим типам форм можно существенно улучшить взаимодействие с пользователями и повысить удобство ввода данных.

Комментарии (1)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Slevin Уровень 64
20 июля 2025
про <textarea> нигде не было