본문 바로가기
🛠 JavaScript

JavaScript를 이용한 로그인 버튼 활성화

by 슬용이 2022. 5. 5.

들어가기 전에

드디어 위코드에서 JacaScript를 활용한 제일 기초적인 활용을 하게 되었다.
아직까지 JS에 대해 설명하라면 하지도 못하겠지만 부딪혀가며 직접 기억에 우겨넣도록 하자!

 


 

우선, 키보드 입력과 연관 된 이벤트들을 알아보자

  • onekeyup : 사용자가 키보드에서 키를 놓을 때 생기는 이벤트
  • onekeydown : 사용자가 키보드에서 키를 누를 때 생기는 이벤트
  • onekeypress : 글씨가 써질 때 생기는 이벤트(shift, ctrl, backspace, tab 한글 등을 인식 못 함)
<input type="text" onkeyup="myFunction()">

이런 식으로 input 혹은 button 태그에 관련 함수를 생성하여 넣는 식으로 사용할 수 있다.

 

 

➕ button 태그의 disabled 속성 활용

<button> 태그의 disabled 속성은 해당 버튼이 비활성화됨을 명시한다.
disabled 속성이 명시된 버튼은 사용할 수 없으며, 사용자가 클릭할 수도 없다.

따라서 이 속성을 사용하면 특정 조건이 충족될 때까지 사용자가 버튼을 클릭할 수 없도록 설정하고, 특정 조건이 충족되면 자바스크립트 등으로 disabled 속성값을 삭제하여 사용자가 버튼을 다시 사용할 수 있도록 조절할 수 있다.

disabled 속성은 불리언(boolean) 속성입니다. 불리언 속성은 해당 속성을 명시하지 않으면 속성값이 자동으로 false 값을 가지게 되며, 명시하면 자동으로 true 값을 가지게 된다.

참조 : http://www.tcpschool.com/html-tag-attrs/button-disabled

 

 

<body>
    <input type="id" placeholder="id" id="id" onkeyup="isEmpty()"><br>
    <input type="password" placeholder="password" id="password" onkeyup="isEmpty()"><p></p>
    <p></p>
    <button id="btn" >activate</button>
    <button id="btn" disabled>disabled</button>
 </body>

 

그럼,  id와 password가 모두 입력되었을 때 버튼 활성화는 어떻게 하면 될까?

프로그래밍에 있어 컴퓨터적 사고가 매우 중요하다고 하는데, 습관을 기르기 위해 풀어서 생각해보자.

1. id와 password가 모두 입력되었을 때는 어떻게 표현할까 ?
  1-1) id와 password가 입력되었다는 것을 알려면 해당 값value을 가져와야 한다.
  1-2) 입력되었을 때라는 조건을 위해서 if문을 사용하고,
  1-3) 모두 입력되었는지라는 조건은 ‘빈칸이 없다’ 라는 표현과 &&(논리곱)으로 쓸 수 있다.
2. 버튼 활성화는 ?
  2-1) 앞서 입력한 비활성화disabled 속성을 없애면 된다.

그럼 코드를 써 보도록 하자!

 

1. id와 password의 값(value)을 가지고 와서

let id = document.getElementById("id").value;
let password = document.getElementById("password").value;

 

2. 각각에 입력된 값이 모두 있다면

if (id != "" && password != "") {}

 

3. btn에 적용되어 있는 disabled 속성을 삭제

document.getElementById("btn").removeAttribute("disabled");

 

종합하자면 이렇다

<script>
        function isEmpty() {
            let id = document.getElementById("id").value;
            let password = document.getElementById("password").value;

            if (id != "" && password != ""){
                document.getElementById("btn").removeAttribute("disabled");
            }
        }
    </script>

 

 

우리가 원했던 모습으로 출력되는 것을 볼 수 있다 ✨

 


 

진행 중이던 westagram에 적용하려던 찰 나...

위 방법대로 기존 파일에 코드를 넣었지만 작업해놓은 로그인 버튼이 disabled 처리가 되지 않았다 🥲

<button id="btn" disabled>로그인</button>
<!-- 왜 적용되지 않는거니 왜... -->

아직 정확한 이유를 찾지 못했지만.. CSS 파일에 button:disabled 스타일을 별도로 추가하여 해결은 하였다!

(하지만 괜히 쓸데없이 CSS 파일이 길어진 것 같아 기분이 별로 좋지 않다..)

 

한 가지 더, 추가로!

기존의 인스타그램 홈페이지 확인을 위해 로그아웃 페이지를 확인해보았다.

그런데 이게 웬걸 왠지 내가 구현한 페이지는 버튼스러운 느낌이 없었는데 그 이유를 찾을 수 있었다.

인스타그램 페이지에는 로그인 버튼이 활성화되면 :hover 했을 때 귀엽고 깜찍한 아이콘이 나온다.

 

이는 CSS에 cursor 속성을 통해 구현할 수 있다.

나는 활성화/비활성화 버튼 두가지 모두에 속성을 주었다.

참조 : https://developer.mozilla.org/ko/docs/Web/CSS/cursor

 

호버로 보이는 아이콘은 스크린샷을 통해 캡쳐할 수 가 없어 사진으로 찍어보았다.

이렇게 짜잘한 디테일을 통해 완성도를 높여나가는 맛이 있다! 🏋️‍♀️

 

 


 

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

About Class  (0) 2022.05.02
About Object  (0) 2022.04.29
생활코딩 WEB2 - JavaScript (2)  (0) 2022.01.21
JavaScript - function  (0) 2022.01.16
JavaScript - for  (0) 2022.01.15

댓글