일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 네이버커넥트
- 생활코딩
- convolution 역전파
- 모각공
- regex
- Filter
- RNN
- 역전파알고리즘
- 베이즈통계학
- r
- group_by( )
- summarise( )
- 자바스크립트
- dplyr
- LinearNeuralNetwork
- Multi-Layer Perceptron
- aitech
- 부스트캠프 aitech3기
- col_names
- NomadCoder
- Sequential Model
- 정규표현식
- 부스트캠프
- regular expression
- 네이버커넥트재단
- Beyond Linear Neural Networks
- mutate( )
- JavaScript
- 부스트캠프aitech3기
- Convolution
- Today
- Total
clear_uncertainty
자바스크립트 입문 [Javascript] - 자바스크립트로 로그인 기능을 구현하기 - (1) 본문
자바스크립트 입문 [Javascript] - 자바스크립트로 로그인 기능을 구현하기 - (1)
SOidentitiy 2021. 7. 25. 19:212021-07-25
자바스크립트 학습일지입니다.
해당 내용은 노마드코더님의 <바닐라JS로 크롬 앱 만들기> 강의를 들으며 추가적인 학습을 정리한 내용입니다.
[Login ]
이제, 실제로 어플리케이션을 만들며 자바스크립트를 배워봅시다.
먼저, 자바스크립트로 로그인 기능을 구현해봅시다.
Input Values
자바스크립트가 작업을 하기 전에, 시작은 HTML이여야 합니다. HTML을 작성한 이유 HTML의 element를 JS로 끌고오는 것입니다.
먼저 HTML을 작성해봅시다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>javascript</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div id="login-form">
<input type="text" placeholder="What is name?"/>
<button>Login</button>
</div>
<script src="javascript.js"></script>
</body>
</html>
그리고 앞에서 배웠던 내용으로 Input과 Button을 JS에 가져와줍시다.
const loginForm = document.getElementById("login-form")
const loginInput = document.querySelector("#login-form input")
const loginButton = document.querySelector("#login-form button")
우리가 원하는 것은 사용자가 input 창에 입력한 이름을 버튼을 눌렀을때 감지하고 저장하는 것입니다.
버튼을 누르는 행위는 click event입니다.
또한, 사용자가 input에 내용한 이름은 value라는 property입니다.
(어떤 property인지 잘 모를때는 console.dir(loginInput)을 통해 알 수 있습니다.)
const loginForm = document.getElementById("login-form");
const loginInput = loginForm.querySelector("input");
const loginButton = loginForm.querySelector("button");
function onLoginBtnclick() {
console.log (loginInput.value);
}
loginButton.addEventListener ("click", onLoginBtnclick);
따라서 우리는 위와 같은 코드를 작성해 유저가 이름을 이용하면 그 이름을 콘솔에 나타낼 수 있습니다.
유효성 검사
여기서 문제가 있습니다. 만약 사용자가 입력을 안해도 우리는 그 값이 입력을 안했는지 알 수 없습니다.
또한 제한 길이가 있는 경우, 우리는 그 값을 넘겼을 때 제어를 할 수 없습니다.
이를 위해 조건문을 통해 해결해봅시다.
const loginForm = document.getElementById("login-form");
const loginInput = document.querySelector("#login-form input");
const loginSubmit = document.querySelector("#login-form button");
function onLoginBtnclick() {
const username = loginInput.value;
if(username === "") {
alert("Please input your name!");
} else if (username.length < 8) {
alert("Your name is too short");
} else {
console.log(username);
}
}
loginButton.addEventListener ("click", onLoginBtnclick);
하지만 우리는 HTML을 통해 이를 제어할 수도 있습니다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>javascript</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<form id="login-form">
<input type="text" required maxlength="15" placeholder="What is name?"/>
<button>Login</button>
</form>
<script src="javascript.js"></script>
</body>
</html>
input의 유효성검사를 위해선 form 안에 input이 있어야합니다.
HTML의 required와 maxlength를 통해 위의 기능을 그대로 재현할 수 있습니다.
preventDefault
여기서 문제는, HTML의 button은 type="submit"을 기본값으로 가지는데 , 웹브라우저는 submit 될 때마다 새로고침 됩니다.
따라서 이제 우리는 click event가 아니라, submit event를 감지해야합니다.
const loginForm = document.querySelector("#login-form");
const loginInput = document.querySelector("#login-form input");
function onLoginSubmit() {
const username = loginInput.value;
console.log(username);
}
loginForm.addEventListener ("submit",onLoginSubmit);
위와 같은 코드는 console에 username이 나오자마자 새로고침됩니다.
새로고침은 submit의 기본 동작입니다. 이러한 기본동작을 막기위해선 preventDefault를 이용해야합니다.
const loginForm = document.querySelector("#login-form");
const loginInput = document.querySelector("#login-form input");
function onLoginSubmit(event) {
event.preventDefault();
const username = loginInput.value;
console.log(username);
}
loginForm.addEventListener ("submit",onLoginSubmit);
function onLoginSubmit()에 event를 넣으면 우리가 JS에 공간을 넣어줌으로써, event는 함수 onLoginSubmit의 첫번째 행위가 됩니다.
event.preventDefault(); 는 event의 기본행위 즉, 새로고침을 제어합니다.
따라서 위의 코드를 통해 우리는 username을 submit 해도, 새로고침을 하지않고 console에 저장할 수 있습니다.
출처