Новинки HTML5: новые элементы формы — <datalist>, <output>, <keygen>, <command>

Элемент <datalist>: Умный помощник для ввода данных 🎯

Допустим, вы создаёте форму поиска на сайте. Как сделать подсказки для пользователей? Раньше требовался JavaScript, но теперь в HTML5 есть <datalist> — встроенный инструмент автодополнения!

<label for="framework">Выберите фреймворк:</label>
<input list="frameworks" id="framework" name="framework">
<datalist id="frameworks">
  <option value="React">
  <option value="Vue">
  <option value="Angular">
  <option value="Svelte">
</datalist>

Как это работает:
- <input> связывается с <datalist> через атрибут list.
- При вводе текста появляются подсказки из <option>.
- Совместим с большинством браузеров, включая мобильные.


<output>: Динамический вывод результата 📊

Нужно показать результат вычислений прямо в форме? <output> — это элемент, который отображает данные «на лету», например, сумму двух чисел:

<form oninput="result.value = Number(num1.value) + Number(num2.value)">
  <input type="number" id="num1" name="num1" value="0">
  <input type="number" id="num2" name="num2" value="0">
  = <output name="result" for="num1 num2">0</output>
</form>

Особенности:
- Атрибут for указывает, какие элементы влияют на вывод.
- Работает без JavaScript (если логика простая).


<keygen>: Генератор ключей (устаревший, но интересный!) 🔑

⚠️ Внимание: <keygen> официально удалён из стандарта HTML5, но он — часть истории! Раньше он использовался для шифрования:

<form action="/auth" method="post">
  <keygen name="key" challenge="12345">
  <input type="submit">
</form>

Почему убрали:
- На смену пришли современные API, например, Web Cryptography API.
- Если встретите в старом коде — знайте, что это редкость!


<command>: Кнопки с действиями (только для IE) 🚫

Элемент <command> должен был создавать кликабельные команды в меню, но поддерживался только в Internet Explorer. Пример «как было»:

<menu type="toolbar">
  <command type="command" label="Сохранить" icon="save.png">
</menu>

Почему не прижился:
- Заменён на <button> и JavaScript.
- Современные браузеры игнорируют этот тег.


Практическое применение: Собираем всё вместе 🛠️

Создадим форму с <datalist> и <output> для заказа пиццы:

<form oninput="price.value = Number(size.value) * 10">
  <label for="pizza">Выберите пиццу:</label>
  <input list="pizzas" id="pizza" name="pizza">
  <datalist id="pizzas">
    <option value="Маргарита">
    <option value="Пепперони">
    <option value="Гавайская">
  </datalist>

  <label for="size">Количество:</label>
  <input type="range" id="size" name="size" min="1" max="5" value="1">
  Итоговая цена: <output name="price" for="size">10</output> $
</form>

Что получили:
- Подсказки при вводе названия пиццы.
- Динамический расчёт цены при изменении количества.


Итоги: Когда и что использовать ✅

Элемент Назначение Совместимость
<datalist> Автодополнение ввода Все современные
<output> Вывод результатов расчётов Все современные
<keygen> Генерация ключей (устарел) Не поддерживается
<command> Команды меню (устарел) Только IE

Совет от Данилы Бежина: <datalist> и <output> — ваши лучшие друзья для форм. Остальные элементы изучайте как исторический экскурс.

Для углублённого понимания смотрите разбор форм на YouTube.

Скрыть рекламу навсегда

🎥 YouTube: программирование простым языком

Канал, где я спокойно и по шагам объясняю сложные темы — без заумных терминов и лишней теории.

Подходит, если раньше «не заходило», но хочется наконец понять.

▶️ Смотреть курсы на YouTube