Script Valley
JavaScript in the Browser: DOM, Events & APIs
Events and Event HandlingLesson 2.4

Preventing default browser behaviour on form submit and links

preventDefault, form submit event, anchor default navigation, input validation, submit vs click

preventDefault

Many browser events have a default action: forms submit and reload the page, anchor tags navigate away. e.preventDefault() cancels that default while still running your handler.

const form = document.querySelector('#login-form');

form.addEventListener('submit', (e) => {
  e.preventDefault(); // stops page reload

  const username = document.querySelector('#username').value;
  if (!username) {
    showError('Username required');
    return;
  }
  sendToServer({ username });
});

Preventing Link Navigation

document.querySelector('a.modal-trigger').addEventListener('click', (e) => {
  e.preventDefault();
  openModal();
});

submit vs click on Buttons

Listen on the <form> element's submit event rather than the submit button's click event. The submit event also fires when the user presses Enter in a text field — the click event does not.

// Prefer this:
form.addEventListener('submit', handler);

// Not this — misses keyboard submission:
btn.addEventListener('click', handler);

Up next

Keyboard and input events: keydown, keyup, and input

Sign in to track progress