프라이D
프라이Develog(❁´◡`❁)
프라이D
전체 방문자
오늘
어제
  • ALL (378)
    • TDD, Cleancode with JavaScr.. (5)
    • 프로젝트 (32)
      • work (3)
      • 직접 만드는 기술 블로그 (2)
      • 데일리 옥션 (19)
      • 모락모락 (8)
    • Computer Science (1)
    • Algorithm & 자료구조 (94)
      • 알고리즘 w.JavaScript (53)
      • 자료구조 (5)
      • (인프런) 자바스크립트 알고리즘 문제풀이 (34)
    • JavaScript (45)
      • JavaScript (41)
      • 모던 자바스크립트 Deep Dive (4)
    • WEB (13)
    • 회고 (12)
    • TIL (109)
    • WIL (7)
    • Stacks (20)
      • React.js (6)
      • Next.js (1)
      • Redux (3)
      • Node.js (2)
      • GIT (2)
      • SAP (1)
    • 15일 메이킹 프로젝트 (15)
    • 이전 기록 (14)
    • ETC. (5)
    • ---------------2021 (6)
      • 내일배움단-웹개발 5주 (2)
      • 정보처리기사 (4)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • nomadcoder
  • MySQL
  • 자바스크립트알고리즘
  • 모던자바스크립트딥다이브
  • 코딩프로젝트
  • 2023 인프콘 후기
  • 비트마스크
  • vanilaJS
  • 내일배움단
  • 코드스테이츠
  • 스파르타코딩클럽
  • 내일배움카드
  • 자바스크립트비트마스크
  • 투포인터알고리즘
  • nomadcoders
  • Til
  • JavaScript
  • 자바스크립트
  • 국비지원
  • 알고리즘

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
프라이D

프라이Develog(❁´◡`❁)

[JS]2021-1104 form태그, event.preventDefault()
JavaScript/JavaScript

[JS]2021-1104 form태그, event.preventDefault()

2021. 11. 4. 22:51

nomadcoders VanilaJS #4.1~2.

form 태그를 쓰는 이유

html태그로, 사용자로 부터 정보를 받아올 수 있는 다양한 기능을 제공한다.

로그인, 회원가입 등 사용자가 입력한 정보를 서버로 전달할 필요가 있을 때 사용!

(로그인 기능 만들 때 왜 div 안에 넣지 말고 form에 input을 써야하는지 잘 몰랐었는데, 오늘 알게됨.)

<form id="login-form">
	<input 
    	required 
        maxlength="15" 
        type="text" 
        placeholder="What is your name?"/>
	<button>Log in</button>
</form>

위와 같이 input 태그를 통해 간단한 유효성 검사를 할 수 있다. 

 

input 태그를 사용하지 않고, 이를 자바스크립트로 작성하면 아래와 같다.

function onLoginSubmit() {
    const username = loginInput.value;
    if (username === "") {
        alert("Please write your name!!!");
    } else if (username.length > 15) {
        alert("It's too long;;");
    }
}

loginForm.addEventListener("click",onLoginSubmit)

submit

<form>
  <input type="submit" value="Login"/>
</form>
<form>
  <button>Login</button>
<form>

input type="submit" 과 botton 태그 모두 submit, 데이터 전송을 위한 태그이다.

submit은 버튼 클릭 혹은 엔터키 입력으로 자동 실행되기 때문에, click 이벤트로 감지할 필요가 없다.

 

데이터 전송을 위해 submit 발생 시 함수를 실행시켜줄 이벤트리스너를 등록해야한다.

이벤트리스너는 form태그에 등록해준다.

const loginForm = document.querySelector("#login-form");
loginForm.addEventListener("submit",onLoginSubmit)

 

event.preventDefault();

submit의 특징은, 발생 시 페이지가 자동 새로고침 된다는 것이다.

사용자가 입력한 정보를 받아오기 위해서는 새로고침을 방지할 필요가 있다.

이 때 사용되는 것이 .preventDefault() 이다. (디폴트를...예방하다...)

이벤트가 실행될 때 기본 탑재된 기능을 방지해주는 역할이라고 보면 될 것 같다.

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

이벤트 리스너의 첫번째 인수는, 이벤트에 대한 정보를 나타낸다.

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

event라는 이름을 쓰는 것은 관행이라고 한다. console.log로 event를 찍어보면...

submit 후 새로고침 되어버리기 때문에 이렇게 정보가 스쳐 지나간다. 

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

.preventDefault() 를 추가한 뒤 다시 실행시키면,

 

이릏게 잘 볼 수가 있다...

새로고침 멈춰!

저작자표시 (새창열림)

'JavaScript > JavaScript' 카테고리의 다른 글

[JS]2021-1107 localStorage - If 문으로 정보 저장 여부 확인  (0) 2021.11.07
[JS]2021-1107 localStorage - CSS,HTML 조작  (0) 2021.11.07
[JS]2021-1107 localStorage로 사용자 정보 저장  (0) 2021.11.07
[JS]2021-1016 (노마드코더 VanilaJS #2.9~2.16)  (0) 2021.10.20
[JS]2021-1016 (노마드코더 VanilaJS #2.0~2.8)  (0) 2021.10.18
    'JavaScript/JavaScript' 카테고리의 다른 글
    • [JS]2021-1107 localStorage - CSS,HTML 조작
    • [JS]2021-1107 localStorage로 사용자 정보 저장
    • [JS]2021-1016 (노마드코더 VanilaJS #2.9~2.16)
    • [JS]2021-1016 (노마드코더 VanilaJS #2.0~2.8)
    프라이D
    프라이D
    틀린내용 정정 및 개선사항은 언제든지 댓글 달아주세요 :D

    티스토리툴바