preventDefault

우선 현재 이 기능을 왜 사용하게 되었냐면 html에서 form-input 을 이용해 로그인 하는 창을 만들었다.

그리고서 여기에 정보를 입력하고 Log In 버튼을 누르면 창이 새로고침 된다. 왜냐하면 브라우저는 버튼을 클릭하거나 엔터를 누르면 form을 submit하면서 새로고침을 하는게 default 값이기 때문이다.

그래서 preventDefault 를 사용해 창이 새로고침 되는 것을 막아야 한다.


그리고 한 가지 알아야 할 정보가 있다.

const loginForm = document.querySelector("#login-form");
const loginInput = document.querySelector("#login-form input");

function onLoginSubmit(tomato) {
  tomato.preventDefault();
  console.log(tomato);
}

loginForm.addEventListener("submit", onLoginSubmit);

이 코드에서 function onLoginSubmit(tomato){} 이 부분에 대해 알아야 한다.

코드를 보다싶이 function onLoginSubmit(tomato){} 에서 tomato 는 그냥 아무 단어를 넣은 것이다. (보통은 event 라고 적는 게 관행)

왜냐하면 우리는 방금 일어난 event 에 대한 정보를 지닌 argument를 넣을 공간이 필요한데 그 공간이 없었기 때문에 공간을 할당한 것 뿐이다.

그렇게 EventListner 함수의 첫 번째 argument 안에 있는 function인 preventDefault 을 이용해 브라우저가 가지고 있는 기본 동작을 못하게 한다. 그리고 tomato로 만들어 둔 공간에 정보를 할당해 우리에게 제공한다.


다른 예시로 HTML 에서 <a> 태그는 하이퍼 링크를 생성시키고 유저가 그 링크를 누르면 해당 URL로 이동하게 된다. 그것은 브라우저의 기본 동작인데 preventDefault 를 사용하면 링크를 눌러도 이동하지 않는다.

const link = document.querySelector("a");

function onClick(event) {
  event.preventDefault();
}

link.addEventListener("click", onClick);

'프론트엔드 > Javascript' 카테고리의 다른 글

interval, timeout  (0) 2023.09.28
localStorage  (0) 2023.09.27
toggle  (0) 2023.09.26
event  (0) 2023.09.21
조건문  (0) 2023.09.19