id, pw 에 각각 한 글자 이상 써야 버튼이 활성화 되도록 해주세요.
원래 연한 파란색이었다가 -> 활성화 되면 파란색으로!
input
태그의 requierd
처럼, disabled
속성으로 button
및 input
의 비활성화가 가능하다는 것을 확인하였다. .disabled
로 속성을 선택하여 활성화, 비활성화를 조작할 수 있음을 확인하였다. 맨 처음 짠 자바스크립트 코드는 다음과 같다.
const usernameInput = document.getElementById("input_username");
const passwordInput = document.getElementById("input_password");
const loginBtn = document.getElementById("login_btn");
passwordInput.addEventListener("keyup", () => {
if (usernameInput.value.length > 0 && passwordInput.value.length > 0) {
loginBtn.disabled = false;
loginBtn.classList.remove("login_btn-disabled");
loginBtn.classList.add("login_btn-abled");
} else {
loginBtn.disabled = true;
}
});
passwordInput.addEventListener("keyup", loginPossible);
form
태그 안의 모든 input
창에서 듣게 하기 위해, 패스워드 인풋에서만 감지하였던 이벤트를 form
태그 전체에서 감지할 수 있도록 수정하였다. const loginForm = document.querySelector("#login-form");
const usernameInput = document.getElementById("input_username");
const passwordInput = document.getElementById("input_password");
const loginBtn = document.getElementById("login_btn");
const loginAbled = () => {
loginBtn.classList.remove("login_btn-disabled");
loginBtn.classList.add("login_btn-abled");
loginBtn.disabled = false;
};
const loginDisabled = () => {
loginBtn.disabled = true;
};
const loginPossible = () => {
usernameInput.value.length > 0 && passwordInput.value.length > 0
? loginAbled()
: loginDisabled();
};
loginForm.addEventListener("input", loginPossible);
삼항 조건 연산자를 사용하기 위해, 함수를 분리하여 코드를 다시 짜 보았다.
DOM
에 querySelector
로 접근할 때, 태그, id, class 등 선택자를 잘 확인하고 접근할 것. id를 class로 접근하는 등의 사소한 실수를 줄이자.