Valid State Detection

목적

--valid, --invalid 상태 클래스를 추가/제거해서 아래 이미지 처럼 경고 메세지가 뜨게 한다.

nomal 상태
valid 상태
invalid 상태

설계

변수 선언

사용된 기능

방법

  • <input>'input'이벤트 바인딩을 한다.

  • matches() 메서드를 사용해서 ':invalid' 선택자가 있는지 확인한다.

    • boolean 값으로 반환하기 때문에 조건 문의 조건으로 사용한다.

  • 위의 메서드를 조건으로 해서 .emailContainer__block

    .emailContainer__block--vaild, .emailContainer__block--invalid 상태 클래스를 추가/제거하도록 한다.

    • parentNode를 사용해서 바로 위의 요소를 변수에 담는다.

문제 (1)

<input>에 텍스트가 아닌 공백만 있을 때, label이 원래 자리로 내려오지 않는 이슈

input에 공백이 있다.
포커스를 잃은 상태에서 label이 내려오지 않는다.

문제 (2)

입력을 위해 <input>을 클릭 했을 때 label이 선택되었다. 그래서 'focus' 이벤트가 발생했을 때 select() 메서드에 setTimeout()을 사용해서 시간을 추가한다.

입력을 위해 <input>을 클릭 했을 때 label이 선택된 모습

결론

Last updated

Was this helpful?