HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Momentum</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<form id="login-form">
<input required maxlength="15" type="text" placeholder="What is your name?" />
<input type="submit" value="Log In">
</form>
<script src="app.js"></script>
</body>
</html>
JS
const loginForm = document.querySelector("#login-form");
const loginInput = document.querySelector("#login-form input");
function onLoginSubmit(event){
event.preventDefault(); //브라우저가 기본동작을 실행하지 못하게 막음
console.log(loginInput.value);
}
loginForm.addEventListener("submit", onLoginSubmit);
event.preventDefault();
- 브라우저가 기본 동작을 실행하지 못하게 막기
- event object는 preventDefault
함수를 기본적으로 갖고 있음
loginForm.addEventListener("submit", onLoginSubmit);
- submit 이벤트가 발생한다면, onLoginSubmit
함수를 실행 시킨다는 의미
- JS는 onLoginSubmit
함수 호출 시 인자를 담아서 호출함.
- 해당 인자는 event object를 담은 정보들
form
을 submit(전송)하면 브라우저는 기본적으로 페이지를 새로고침 하도록 되어있다.
preventDefault()
함수를 추가함으로써 브라우저의 기본동작을 막을 수 있다.
preventDefault
함수는 EventListener
함수의 ‘첫번째 argument’안에 있는 함수이다. 첫 argument는 지금 막 벌어진 event들에 대한 정보를 갖고 있다.
JS는 (기본적으로)argument를 담아서 함수를 호출하는데, 이 argument가 기본 정보들을 제공하고 있다.
ex) 누가 submit주체인지, 몇시에 submit을 했는지 등등 콘솔에 출력해보면 알 수 있음
form의 기본동작은 submit
form의 기본동작은 submit, a의 기본동작은 링크이동 등등 각 기본동작들이 있음
addEventListener
안에 있는 함수는 직접 실행하지 않는다. 브라우저가 실행시켜주고 브라우저에서 해당 이벤트에 대한 정보 즉, object를 가지게된다.
addEventListener
의 함수에서 object에 대한 자리만 할당해주면 해당 이벤트가 발생시킨 정보들에 대한 object들을 볼 수 있다.
이때 해당 이벤트가 가진 기본Default값을 발생시키지 않게 하기 위해선 preventDefault
를 이용하여 막을 수 있다.
const loginForm = document.querySelector("#login-form");
const loginInput = document.querySelector("#login-form input");
const link = document.querySelector("a");
function onLoginSubmit(event){
event.preventDefault(); //브라우저가 기본동작을 실행하지 못하게 막음
// const username = loginInput.value;
console.log(loginInput.value);
}
function handleLinkClick(event){
event.preventDefault(); //a태그 클릭하여도 링크이동 안됨
console.dir(event);
alert("clicked!");
}
loginForm.addEventListener("submit", onLoginSubmit);
link.addEventListener("click", handleLinkClick);
이 글은 패스트캠퍼스 노마드코더 '바닐라 JS로 크롬 앱 만들기'을 수강하며 정리한 노트입니다.
https://nomadcoders.co/javascript-for-beginners/lobby