Итоги
В этом уроке вы узнали, что:
- Обработчик получает объект события в качестве аргумента:
function (event) { ... }.event.target— это элемент, на котором произошло событие, поэтому одна функция может обрабатывать несколько элементов. - Атрибуты, которые начинаются с
data-, хранят ваши собственные данные в элементах:data-color="teal"— этоelement.dataset.color, всегда в виде текста. - События всплывают через элементы, в которых лежит цель, поэтому один обработчик на списке обрабатывает нажатия на все его пункты, даже добавленные позже.
event.target.closest("li")находит пункт, на который нажали, или возвращаетnull. - Событие
inputприходит после каждого изменения текста в поле, так что страница может реагировать, пока пользователь печатает. Событиеchangeприходит, когда меняется выбор:valueуselectилиcheckedу флажка (trueилиfalse). - У текста есть методы
includes(),toLowerCase()иtrim(), который убирает пробелы в начале и в конце. - Событие
keydownприходит с каждой нажатой клавишей, аevent.keyговорит, какая это клавиша:"a","Enter","Escape", с заглавными буквами в точности как написано. - Форма
formотправляется кнопкой отправки или клавишей Enter, и тогда она получает событиеsubmit. Вызовите в обработчикеevent.preventDefault(), иначе браузер загрузит страницу заново, и всё набранное пропадёт. - Прежде чем использовать набранное, проверьте его: пустое ли оно, не слишком ли короткое, не вместо ли числа (
Number.isNaN(), но никогда не=== NaN). Показывайте каждую ошибку рядом с её полем, очищайте её, когда поле заполнено правильно, и выполняйте работу формы только когда все поля заполнены правильно.
В следующем уроке, «Мини-проект: Форма регистрации», вы примените всё это на деле в форме регистрации, которая сама себя проверяет: она говорит, что не так, поле за полем, и приветствует нового пользователя, когда всё правильно.
Но сначала немного практики: стикер, на котором можно писать и менять его цвет. Файл script.js снова пуст, и всю программу вы напишете сами.
Задание
- 1
Сделайте так, чтобы заметка показывала то, что написано в поле
#text, по мере ввода: после каждого изменения текста в поле помещайте этот текст в#note. - 2
Нажатие на кнопку в
#colorsменяет цвет фона у#note(егоstyle.backgroundColor) на цвет изdata-colorэтой кнопки. У кнопок нетid, поэтому дайте#colorsодин обработчик клика и найдите нажатую кнопку с помощьюclosest().