Формы в HTML5 (часть 1)

Формы в HTML5 (часть 1)

Всем доброго времени суток. На связи Алексей Гулынин. В прошлой статье вы узнали о новых структурных элементах в HTML5. В данной статье я бы хотел рассказать, что нового принёс нам HTML5 при работе с формами. В первую очередь это проверка полей на соответствие некоторым условиям, без использования Javascript. Раньше мы все поля для ввода задавали тегом <input> с атрибутом type="text". Затем javascript’ом проверяли, чтобы поле было непустым, удовлетворяло определенным требованиями (например, e-mail пользователя). С приходом HTML5 вся эта процедура упростилась. Давайте начнём разбираться на примере. Давайте создадим форму и добавим тег <input> с новым атрибутом type="email" (данный атрибут не даст нам отправить форму, пока не будет введен корректный адрес электронной почты):

<!DOCTYPE html5>
<html>
<head>
	<title>Формы в HTML5</title>
	<meta charset="utf-8"/>
</head>
<body>
<form name = "form1" action = "#" method = "post">	
	<input type = "email" name = "email" required /></p>
	<p><input type = "submit" name = "submit" value = "Отправить"/></p>
</form>
</body>
</html>

В данном случае мы указали тип поля email, и по сути, пока мы не введем корректный адрес электронной почты, форма не должна отправляться. Яндекс — браузер выводит очень интересную подсказку, когда мы вводим какую-нибудь ерунду в данное поле. Я ввел "123" и попробовал отправить. Вылезло сообщение о том, что необходим символ "@"

Т.е. если я введу "@", то форма у нас должна отправится. Что собственно и произошло. Поэтому данным типом поля я не рекомендую пользоваться, если только не добавить в него ещё один атрибут — pattern.

Данный атрибут проверяет соответствие того, что мы ввели, тому что находится в pattern. Здесь необходимо знание регулярных выражений. Давайте сделаем, чтобы наша форма отправлялась только после того, как мы введем НОРМАЛЬНЫЙ адрес электронной почты, а не только строку, содержащую "@":

<p>Электронная почта: <input type = "email" name = "email" required pattern = "^\w+[\w-\.]*\@\w+((-\w+)|(\w*))\.[a-z]{2,3}$"/></p>

Если вы не знаете, что такое регулярные выражения, то не беда. В одной из следующих статей они будут рассмотрены.

Вот теперь у нас поле работает нормально.
Атрибут required нужен для того, чтобы нельзя было отправить пустое выражение (required — обязателен к заполнению).

Также появился атрибут type со значением tel, который позволяет ввести телефон:
Здесь же опять необходимо указывать pattern, чтобы данное поле работало нормально, ведь формат телефонов у всех же разный. К примеру вот такой формат:

<p>Телефон: <input type = "tel" name = "tel" pattern = "[0-3]{3}-[0-2]{2}-[0-2]{2}"/> Пример корректного номера 937-12-12</p>

Пока телефон не будет введен правильным способом, форма никуда не отправится. Также отмечу, что pattern можно использовать и в простых текстовых полях (type="text").

Ещё один новый атрибут type со значением url, который позволяет проверить действительно ли введен url. Пример:

<p>Url: <input type = "url" name = "url" required/></p>. В яндекс-браузере работает корректно.

Ещё один новый элемент — это ползунок, который задаётся атрибутом type со значением range.

<input type="range" min="1" max="100"/>

У данного элемента есть минимальное и максимальное значение, которые затем можно куда-то передавать. Сразу домашнее задание:

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

Если возникнут трудности, то код можно посмотреть ниже:

Подсмотреть код реализации

<!DOCTYPE html5>
<html>
<head>
	<title>Работа с ползунком в HTML5</title>
	<meta charset="utf-8"/>
</head>
<body>
<form name = "form1" action = "#" method = "post">
	<p><input id="myrange" type="range" min="1" max="100"/> | <input type = "text" id="mytext" value = "5" /></p>
	<script>
	var range = document.getElementById("myrange");
	var text = document.getElementById("mytext");
	range.addEventListener("change", function(){ //подписываем на событие change
		text.value = range.value;
	});
	</script>
</form>
</body>
</html>

Следующий новый элемент — это number. Сразу приведу пример и всё станет понятно:

<p><input type = "number" min = "5" max = "100" step = "5"></p>

В данном случае мы можем выбрать элементы от 5 до 100 с шагом 5. Данный элемент далек от совершенства. Мало того, что он в разных браузерах выглядит по-разному, так в него можно вручную внести значение (некоторые браузеры это обрабатывают). Хотя мой браузер вполне нормально обработал данное поле (пользуюсь яндекс-браузером). Использовать его пока не рекомендую, если только не делать проверки на Javascript. Ещё одно домашнее задание (на этот раз кода не будет):

Сделайте проверку на Javascript, что введенное значение в данное поле должно было кратно 5 (использовать событие change).

Пока мы разобрали только один атрибут required. Но есть ещё и другие:

Атрибут autofocus служит для того, чтобы при переходе на данную страницу, фокус попал именно в данное поле.

Атрибут placeholder служит для подсказки. Как только вы что-то начнете вводить, подсказка исчезнет. Для примера:

<p>Электронная почта: <input type = "email" name = "email" required autofocus placeholder = "Введите e-mail..."/></p>

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

На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.


Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *