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



설계
변수 선언
사용된 기능
Array.from() → 유사배열 배열화
Element.matches() → 해당 요소에 전달한 선택자가 있는지 확인
HTMLInputElement.select () → <input>의 모든 텍스트를 선택
e.target.value → <input>에 입력한 값을 알 수 있다.
Window: blur event → 포커스를 잃었을 때
방법
<input>에'input'이벤트 바인딩을 한다.matches()메서드를 사용해서':invalid'선택자가 있는지 확인한다.boolean값으로 반환하기 때문에 조건 문의 조건으로 사용한다.
위의 메서드를 조건으로 해서
.emailContainer__block에.emailContainer__block--vaild,.emailContainer__block--invalid상태 클래스를 추가/제거하도록 한다.parentNode를 사용해서 바로 위의 요소를 변수에 담는다.
문제 (1)
<input>에 텍스트가 아닌 공백만 있을 때, label이 원래 자리로 내려오지 않는 이슈


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

결론
Last updated
Was this helpful?