Кратко
СкопированоНа каждое действие пользователя на сайте, браузер создаёт события. Это наш главный способ в коде понимать, что происходит на странице. Событие — это объект, который имеет набор свойств и методов для взаимодействия с ним.
prevent
— метод события. Этот метод отменяет поведение браузера по умолчанию, которое происходит при обработке события.
Например, при нажатии на ссылку, мы переходим по адресу этой ссылки. Вызов prevent
отменит это поведение.
Как пишется
СкопированоОтменим переход по ссылке для всех тегов <a>
на странице. Для этого получим все ссылки с помощью query
, подпишемся на событие 'click'
, и вызовем prevent
:
const links = document.querySelector('a')links.addEventListener('click', (event) => { // отменяем действие по умолчанию. Перехода по ссылке не будет event.preventDefault()})
const links = document.querySelector('a') links.addEventListener('click', (event) => { // отменяем действие по умолчанию. Перехода по ссылке не будет event.preventDefault() })
Пример
СкопированоКак понять
СкопированоДавайте разберём код из интерактивного примера:
const runTimer = (inputElement) => { setTimetout(() => { inputElement.focus() }, 5000) } const inputElement = document.querySelector('.input') inputElement.addEventListener('mousedown', (event) => { event.preventDefault() runTimer(inputElement) });
const runTimer = (inputElement) => { setTimetout(() => { inputElement.focus() }, 5000) } const inputElement = document.querySelector('.input') inputElement.addEventListener('mousedown', (event) => { event.preventDefault() runTimer(inputElement) });
Когда пользователь нажимает на инпут элемент, генерируется цепочка событий в следующем порядке: mousedown
-> mouseup
-> click
.
Когда происходит событие mousedown
, браузер устанавливает фокус на поле ввода. Вызовом event
мы отменили это поведение. Затем мы запустили таймер, который установит фокус на инпут через 5 секунд с помощью вызова метода focus
.
На практике
Скопированосоветует Скопировано
🛠 Часто возникает необходимость отправить данные из формы на сервер без перезагрузки страницы. Поведение по умолчанию формы — это отправка запроса на сервер и перезагрузка страницы. И тут нам на помощь приходит метод prevent
, который отменит действия связанные с отправкой формы:
<form class="discount-form"> <label for="promocode">Промокод</label> <input id="promocode" type="text" name="promocode" placeholder="WIN-1234" required> <button type="submit">Применить</button></form>
<form class="discount-form"> <label for="promocode">Промокод</label> <input id="promocode" type="text" name="promocode" placeholder="WIN-1234" required> <button type="submit">Применить</button> </form>
const form = document.querySelector('.discount-form')form.addEventListener('submit', (event) => { event.preventDefault() // код по подготовке данных // и их отправка на сервер})
const form = document.querySelector('.discount-form') form.addEventListener('submit', (event) => { event.preventDefault() // код по подготовке данных // и их отправка на сервер })
Подробнее этот подход разбирается в статье «Работа с формами».