JavaScript/노마드코더 Vanilla JS

[Vanilla JS] Login

seung_hyeon 2024. 7. 4. 15:57

#4 Login

• input

사용자로부터 데이터를 입력받기 위해 사용되는 폼

 

※ input 요소를 form 요소 안에 넣어야 하는 상황

  • 데이터를 서버로 전송할 때
  • 브라우저의 기본 폼 기능을 사용할 때
  • 클라이언트 측 유효성 검사를 할 때
  • 접근성을 높일 때
  • 폼 데이터를 그룹화할 때

form 요소 안에 넣어야 하는 이유!

- 사용자가 데이터를 입력하고 엔터 키 or 버튼 누를 때 해당 데이터가 자동으로 서버로 제출 

 

Event

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

 

➣ preventDefalut 함수 

브라우저가 기본적으로 수행하는 동작을 막는다 

ex) 새로고침

 

onLoginSubmit(event)

→ event : 실행된 event들이 저장된다

 

(event)

- 이벤트 객체 사용 가능, 정보 활용 ex) 객체를 통해 클릭된 요소, 클릭위치 등

()

- 이벤트 객체 사용 불가능, 함수가 실행되지만 이벤트에 대한 구체적인 정보 사용 불가능

 

greeting.innerText = "Hello " + username;

 

greeting.innerText = `Hello ${username}`;

 

➣ String + 변수, 변수를 String에 넣을 때 사용 

 ` ` (백틱 사용)

 

 

• localStorage

브라우저가 제공하는 웹 저장소 API

localStorage.setItem("username", username);

 

➣ 첫 번째 인자 : key , 두 번째 인자 : value

※ key는 문자열로 저장  ∴ " " or ' ' 사용

localStorage

 


 

Login practice

 

<html>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style.css">
    <title>Momentum App</title>
</head>
<body>
    <form class="hidden" id ="login-form">
    <input 
    required
    maxlength="15"
    type="text" 
    placeholder="What is your name?" />
    <button>Log In</button>
    </form>
    <h1 id = "greeting" class="hidden"></h1>
    <script src ="app.js"></script>
</body>
</html>

 

 

<css>

.hidden{
    display: none;
}

 

 

<JavaScript>

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

const HIDDEN_CLASSNAME = "hidden";
const USERNAME_KRY = "username";

function onLoginSubmit(event){
    event.preventDefault();
    //form 숨김
    loginForm.classList.add(HIDDEN_CLASSNAME);
    const inputUsername = loginInput.value;
    localStorage.setItem(USERNAME_KRY, inputUsername);
    //user정보 input으로부터 온다
    paintGreetings(inputUsername);
}

function paintGreetings(username){
    greeting.innerText = `Hello  ${username}`;
    //h1을 띄움
    greeting.classList.remove(HIDDEN_CLASSNAME);
}

const savedUsername = localStorage.getItem(USERNAME_KRY);

if(savedUsername === null){
    //form hidden를 지움 -> form 띄움
    loginForm.classList.remove(HIDDEN_CLASSNAME);
    loginForm.addEventListener("submit", onLoginSubmit);
} else {
    //user정보가 localStorage로부터 온다
    paintGreetings(savedUsername);
}

 


 

#4 Login 전 페이지

 

#4 Login 후 페이지

'JavaScript > 노마드코더 Vanilla JS' 카테고리의 다른 글

[Vanilla JS] Weather API  (0) 2024.07.07
[Vanilla Js] To do list  (0) 2024.07.07
[Vanilla JS] Clock, Quotes and background  (0) 2024.07.06
[Vanilla Js] Js on the browser  (0) 2024.07.04