프론트엔드 스쿨 modal 로그인 화면 구현 과제 중 input tag에 값이 입력이 되지 않은 상태로 로그인 버튼이 눌리게 되면 경고 문구와 빨간색 border를 보여야 하는 부분이 있었다.

이 부분을 .css()를 활용해 구현하려 하는데 문제가 발생했다.
$("#modal-login-btn").click(function () {
let userID = $("#user-id").val();
if (userID == "") {
$(".id-error").show();
$(".error-line").show();
$("#user-id").css("border", "2px solid #F4492E");
} else {
$(".info-error").show();
}
});
$("#user-id").focus(function () {
$("#user-id").css("border", "1px solid #C4C4C4");
$(".id-error").hide();
$(".error-line").hide();
$(".info-error").hide();
});
위의 코드 처럼 login-btn이 클릭되면 상태를 확인하고, 아무런 정보가 입력되지 않은 경우 .css("border", "2px solid #F4492E") 함수를 활용해 border를 빨간색으로 변경하는 것까지는 잘 작동되었다.
그런데,
$("#user-id").focus(function () {
$("#user-id").css("border", "1px solid #C4C4C4");
user-id에 1px solid #c4c4c4가 적용되지 않고 빨간 border를 그대로 유지하는 문제가 발생했다.
jQuery 의 .css() 란?
선택한 요소의 css 속성값을 가져오거나 style 속성을 추가하는 method
사용 방법
1) 속성값 가져오기
$("{ 선택할 요소나 class, id }").css("{선택할 속성}");
2) 속성값 추가하기
$("{ 선택할 요소나 class, id }").css("{선택할 속성:지정하려는 값}");
속성값을 추가하는 요소이기 때문에 style.css의 속성이 변경된 것이 아니라, user-id에 inline으로 style 추가돼 우선순위가 더 높은 inline-style이 user-id에 적용된 것이 었고, 중복으로 요소를 추가하는 것은 불가능한 것으로 보였다.
그래서 앞서 추가한 요소를 없애는 방법을 생각하고 코드를 수정해봤다.
$("#modal-login-btn").click(function () {
let userID = $("#user-id").val();
if (userID == "") {
$(".id-error").show();
$(".error-line").show();
$("#user-id").css("border", "2px solid #F4492E");
} else {
$(".info-error").show();
}
});
$("#user-id").focus(function () {
$("#user-id").css("border", "");
$(".id-error").hide();
$(".error-line").hide();
$(".info-error").hide();
});
그 결과, 경고창이 정상적으로 작동하는 것을 확인 할 수 있었다.

로그인 화면을 구현하며, 앞으로 배울 JavaScript에 대해 예습도 하고 사용하는 함수의 동작을 확실히 알아가게 되었던 것 같다.
'FrontEnd > JavaScript' 카테고리의 다른 글
JavaScript의 변수와 자료형 (0) | 2022.04.28 |
---|