Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задания и решения примеров htmlacademy.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
13.49 Mб
Скачать

Переключение между полями [25/28]

При нажатии клавиши Tab браузер передает управление (фокус) от одного элемента к другому в том порядке, в котором они были объявлены на странице. Этим порядком можно управлять при помощи атрибута tabindex.

Пример записи:

<input type="text" tabindex="3">

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

form25-28.html

<!DOCTYPE html>

<html lang="ru">

<head>

<title>Переключение между полями</title>

<meta charset="utf-8">

<link rel="stylesheet" href="https://htmlacademy.ru/assets/course74/keksik-style.css">

<style>

form {

width: 300px;

margin: 0 auto;

padding: 20px;

background-color: #ffffff;

border-radius: 10px;

box-shadow: 0 0 10px #cccccc;

}

fieldset {

padding: 10px;

border: 1px solid #34495e;

border-radius: 5px;

}

fieldset legend {

color: #34495e; /*голубой*/

}

label {

display: block;

margin-bottom: 5px;

}

input,

select {

width: 95%;

height: 24px;

margin-bottom: 10px;

padding: 2px 5px;

font-family: "Roboto", sans-serif;

border: 1px solid #cccccc;

border-radius: 5px;

vertical-align: middle;

}

select[multiple] {

height: 60px;

}

input[type="submit"] {

display: inline-block;

width: auto;

height: auto;

margin: 0 5px;

padding: 6px 15px;

color: #ffffff;

background: #2c3e50;

border: none;

border-radius: 5px;

}

.one-third-width {

width: 33.3%;

}

.two-third-width {

width: 66.6%;

}

.half-width {

width: 50%;

}

.one-third-width,

.two-third-width,

.half-width {

display: inline-block;

margin-right:4px;

}

.one-third-width input,

.two-third-width select {

width: 80%;

}

.half-width input {

width: 80%;

}

.half-width input[type="range"] {

width: 65%;

}

.buttons {

margin-top: 10px;

text-align: center;

}

main {

min-height: 400px;

}

</style>

</head>

<body>

<header class="page-header">Форма личных данных</header>

<main>

<form action="/echo" method="post">

<fieldset>

<legend>Заявление на получение визы</legend>

<label for="passport">Номер котопаспорта</label>

<input type="text" id="passport" name="passport" pattern="[0-9]{3}-[0-9]{5}" placeholder="Формат номера XXX-XXXXX">

<label for="tel">Номер телефона</label>

<input type="tel" id="tel" name="tel" pattern="[0-9]{1}-[0-9]{3}-[0-9]{3}" placeholder="Формат номера X-XXX-XXX" tabindex="2">

<div class="half-width">

<label for="email">Email</label>

<input type="email" id="email" name="email" tabindex="3">

</div>

<div class="half-width">

<label for="url">Личный сайт</label>

<input type="url" id="url" name="url">

</div>

<div class="one-third-width">

<label for="color">Окрас</label>

<input type="color" id="color" name="color">

</div>

<div class="two-third-width">

<label for="food">Любимая еда</label>

<select id="food" name="food" tabindex="1">

<optgroup label="Вкуснятина">

<option value="meat">Мясо</option>

<option value="fish">Рыба</option>

<option value="chi">Курочка</option>

<option value="ind">Индейка</option>

<option value="mice">Мыши</option>

</optgroup>

<optgroup label="Сойдёт">

<option value="milk">Молоко</option>

<option value="kef">Кефир</option>

<option value="water">Вода</option>

<option value="smet">Сметана</option>

</optgroup>

</select>

</div>

</fieldset>

<div class="buttons">

<input type="submit" value="Оформить">

</div>

</form>

</main>

<footer class="page-footer"></footer>

</body>

</html>

localStorage [26/28]

Кексик наконец-то попал в Норвегию и во время путешествия начал вести путевые заметки. Даже создал для этого простую форму. Но из-за плохого интернета форму часто не удавалось отправить и введённая заметка терялась.

Как справиться с этой довольно часто встречающейся проблемой, когда введённые в форму данные теряются?

Для этого можно использовать одну из новинок HTML5 — localStorage. Эта технология относится к JavaScript, а не к HTML или CSS, но промолчать о ней мы не можем.

Суть localStorage или «локального хранилища» заключается в том, что в него можно записывать данные, которые будут сохраняться в браузере. Эти данные не исчезнут даже если вы закроете браузер и откроете его снова или уйдете со страницы и потом вернётесь на неё.

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

Давайте проверим работу localStorage. Это просто. Мы уже всё подготовили, вам осталось только раскомментировать один тег.

form26-28.html

<!DOCTYPE html>

<html lang="ru">

<head>

<title>localStorage</title>

<meta charset="utf-8">

<link rel="stylesheet" href="https://htmlacademy.ru/assets/course74/keksik-style.css">

<style>

form {

width: 300px;

margin: 20px auto;

padding: 20px;

background-color: #ffffff;

border-radius: 10px;

box-shadow: 0 0 10px #cccccc;

}

label {

display: block;

margin-bottom: 5px;

}

textarea {

width: 95%;

margin-bottom:10px;

padding: 2px 5px;

font-size: 14px;

font-family: "Roboto", sans-serif;

border: 1px solid #cccccc;

border-radius: 5px;

}

input[type="submit"] {

display: inline-block;

margin: 0 5px;

padding: 6px 15px;

color: #ffffff;

background: #2c3e50;

border: none;

border-radius: 5px;

}

.buttons {

margin-top: 10px;

text-align: center;

}

</style>

</head>

<body>

<header class="page-header">Путевые заметки</header>

<main>

<form action="/echo" method="post">

<label for="note">Текст заметки</label>

<textarea id="note" name="note" rows="9">Пойми, в Норвегии только и говорят, что о море. Как оно бесконечно прекрасно… О закате, который они видели… О том, как солнце, погружаясь в волны, стало алым как кровь. И почувствовали, что море впитало энергию светила в себя, и солнце было укрощено, и огонь уже догорал в глубине.</textarea>

<div class="buttons">

<input type="submit" value="Сохранить">

</div>

</form>

</main>

<footer class="page-footer"></footer>

<script>

if (window.localStorage) {

var elements = document.querySelectorAll('[name]');

for (var i = 0, length = elements.length; i < length; i++) {

(function(element) {

var name = element.getAttribute('name');

element.value = localStorage.getItem(name) || '';

element.onkeyup = function() {

localStorage.setItem(name, element.value);

};

})(elements[i]);

}

}

</script>

</body>

</html>