개발공부/TIL

로그인페이지만들기 / 추가학습

개발집사 2022. 7. 14. 18:50

버튼비활성화 만들기

HTML

<fieldset>
        <input type="text" id="username" placeholder="아이디" />
      </fieldset>

      <div class="success-message hide">사용할 수 있는 아이디입니다</div>
      <div class="failure-message hide">아이디는 네 글자 이상이어야 합니다</div>

      <fieldset>
        <input type="password" id="password" placeholder="비밀번호" />
      </fieldset>

      <div class="only-number hide">숫자만 입력이 가능합니다.</div>

      <fieldset>
        <input
          type="password"
          id="password-retype"
          placeholder="비밀번호 확인"
        />
      </fieldset>

      <div class="mismatch-message hide">비밀번호가 일치하지 않습니다</div>

      <fieldset class="signup">
        <button id="target_btn" class="btn">회원가입</button>
      </fieldset>

JS

1. 첫번째 시도해봤던 코드

let elInputUsername = document.querySelector('#username')
let elPassword = document.querySelector('#password')
let elPasswordRetype = document.querySelector('#password-retype')
let elTargetBtn = document.querySelector('#target_btn')

//버튼 활성 비활성화

//vlaue가 모두 입력된다면
elTargetBtn.onclick =function(){
  //다 채워졌을때는 btn.disabled = 'false'
  if(isFullBtn(elInputUsername.value,elPassword.value,elPasswordRetype.value)){
    elTargetBtn.disabled = false;
  }
  //안 채워졌을때는 btn.disabled = 'true'
  else{
    elTargetBtn.disabled = true;
  }
}

function isFullBtn(value1, value2, value3){
  return value1.length > 0 && value2.length >0 && value3.length >0
}

작동하지 않는 것 같다.

채워지지않았을 때는 들어가는 것 같은데,  비활성화가 안먹히는 듯..

class를 넣어서 classList.add 와 remove를 써야하나 싶은데 다시 시도해봐야겠다.

 

참고사항1

1. keyup 키보드에서 손을 땠을 때 실행
2. keydown 키보드를 눌렀을 때 실행 키보드를 누르고 있을 때 한번만 실행됨
3. keypress 키보드를 눌렀을 때 실행 키보드를 누르고 있을 때 계속 실행됨
* Ctrl, Alt, Shift 키 등은 keydown에서는 작동하지만 keypress 에서 작동하지 않음
출처:
https://silver0r.tistory.com/119
[어흥:티스토리]

 


우선, css 에서 disabled의 background-color를 darkgrey로 바꾸고 시작했다.

그리고 button은 disabled가 초기값이 되도록 설정해두었다.

 

검색 결과

elInputUsername.addEventListener('keyup', listener);
elPassword.addEventListener('keyup', listener);
elPasswordRetype.addEventListener('keyup', listener);

function listener() {
    switch (!(elInputUsername.value && elPassword.value && elPasswordRetype.value)) {
        case true: elTargetBtn.disabled = true; break;
        case false: elTargetBtn.disabled = false; break;
    }
}

아직 배우지 않은  switch! 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch

 

switch - JavaScript | MDN

The switch statement evaluates an expression, matching the expression's value to a case clause, and executes statements associated with that case, as well as statements in cases that follow the matching case.

developer.mozilla.org

간단하게 해결되는 문장이었다. value가 채워지지않았다면 disabled 가 true로 채워졌다면 false로 변환하게 하는것이다.

'개발공부 > TIL' 카테고리의 다른 글

JSON  (0) 2022.08.19
Section1 회고  (0) 2022.07.20
배열과 객체  (0) 2022.07.08
리눅스/맥  (0) 2022.07.07
계산기 만들기 HTML/CSS  (0) 2022.07.04