-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[김종화] sprint4 #116
The head ref may contain hidden characters: "Basic-\uAE40\uC885\uD654-sprint2"
[김종화] sprint4 #116
Conversation
<form action="" accept-charset="UTF-8" name="panda-signup" method="get"> | ||
<main class="signup-main"> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
main
에는 페이지의 컨텐츠들이 들어가는 태그이고 form
은 회원가입 페이지에서 중요한 컨텐츠라고 볼 수 있어서 둘의 위치가 바뀌어야합니다.
<form action="" accept-charset="UTF-8" name="panda-signup" method="get"> | |
<main class="signup-main"> | |
<main class="signup-main"> | |
<form action="" accept-charset="UTF-8" name="panda-signup" method="get"> | |
<div class="easy-login-section"> | ||
<p class="easy-login-font"> | ||
간편 로그인하기 | ||
</p> | ||
<div class="easy-login-layout"> | ||
<a href="https://www.google.com/"> | ||
<img src="image/Component 2.png" alt="구글 로그인" width="42px" height="42px"> | ||
</a> | ||
<a href="https://www.kakaocorp.com/page/"> | ||
<img src="image/Component 3.png" alt="카카오톡 로그인" width="42px" height="42px"> | ||
</a> | ||
</div> | ||
</div> | ||
<div class="login-link-font"> | ||
이미 회원이신가요? <a class="login-link" href="login.html">로그인</a> | ||
</div> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
form
은 서버로 보내지는 유저들의 입력값들을 모아놓은 태그이므로 간편로그인이나 로그인 페이지로의 이동은 form
밖에 있어야합니다.
<div class="fail-login-blank hide"> | ||
이메일을 입력해주세요. | ||
</div> | ||
<div class="fail-login-email hide"> | ||
잘못된 이메일 형식입니다. | ||
</div> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
텍스트는 p
태그로 작성을 해주셔야합니다 ㅎㅎ
<label class="signup-label-font" for="passwordCheck">비밀번호 확인</label> | ||
<div class="password-hidden-layout"> | ||
<input class="signup-layout" id="passwordCheck" type="password" placeholder="비밀번호를 다시 한 번 입력해주세요"> | ||
<img class="password-hidden cursor-pointer" src="image/btn_visibility_on_24px.png" alt="비밀번호 표시 변경"> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
padding
을 없애고 패딩과 같은 값인 16px, 24px을 각각 top
, right
속성에 주면 같은 효과가 납니다.
absolute
포지션이면 주로 top
,left
로 위치 조정을 합니다. 위치조정을 위해서는 패딩으로는 잘 안하는 것 같습니다 ㅎㅎ
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
onClick
과 같은 이벤트 핸들러보다 addEventListener
를 쓰는것이 좀 더 최신의 이벤트 핸들러 정의 방법이라고 합니다.
그 둘의 차이를 한번 비교해보시겠어요 ?
https://nangman14.tistory.com/27
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
정보 공유 감사합니다 ! 해당 내용 참고하여 수정해보겠습니다.
email.onfocus = function() { | ||
failLoginBlank.classList.add("hide"); | ||
failLoginEmail.classList.add("hide"); | ||
email.classList.remove("fail-layout"); | ||
}; | ||
|
||
email.onblur = function() { | ||
if(checkBlankType(email.value)) { | ||
failLoginBlank.classList.remove("hide"); | ||
failLoginEmail.classList.add("hide"); | ||
email.classList.add("fail-layout"); | ||
} else if(!checkEmailType(email.value)) { | ||
failLoginEmail.classList.remove("hide"); | ||
failLoginBlank.classList.add("hide"); | ||
email.classList.add("fail-layout"); | ||
} | ||
checkAll() | ||
}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
하나의 이벤트에서 모든것을 처리하지 않고 , onfocus
, onblur
이벤트에 각각 로직을 작성해주신 점은 좋습니다 !
email.onfocus = function() { | ||
failLoginBlank.classList.add("hide"); | ||
failLoginEmail.classList.add("hide"); | ||
email.classList.remove("fail-layout"); | ||
}; | ||
|
||
email.onblur = function() { | ||
if(checkBlankType(email.value)) { | ||
failLoginBlank.classList.remove("hide"); | ||
failLoginEmail.classList.add("hide"); | ||
email.classList.add("fail-layout"); | ||
} else if(!checkEmailType(email.value)) { | ||
failLoginEmail.classList.remove("hide"); | ||
failLoginBlank.classList.add("hide"); | ||
email.classList.add("fail-layout"); | ||
} | ||
checkAll() | ||
}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
const email = document.querySelector("#email");
email 변수를 사용되는 곳에 가까이 위치시키면 가독성이 더 좋아집니다.
email.onfocus = function() { | |
failLoginBlank.classList.add("hide"); | |
failLoginEmail.classList.add("hide"); | |
email.classList.remove("fail-layout"); | |
}; | |
email.onblur = function() { | |
if(checkBlankType(email.value)) { | |
failLoginBlank.classList.remove("hide"); | |
failLoginEmail.classList.add("hide"); | |
email.classList.add("fail-layout"); | |
} else if(!checkEmailType(email.value)) { | |
failLoginEmail.classList.remove("hide"); | |
failLoginBlank.classList.add("hide"); | |
email.classList.add("fail-layout"); | |
} | |
checkAll() | |
}; | |
const email = document.querySelector("#email"); | |
email.onfocus = function() { | |
failLoginBlank.classList.add("hide"); | |
failLoginEmail.classList.add("hide"); | |
email.classList.remove("fail-layout"); | |
}; | |
email.onblur = function() { | |
if(checkBlankType(email.value)) { | |
failLoginBlank.classList.remove("hide"); | |
failLoginEmail.classList.add("hide"); | |
email.classList.add("fail-layout"); | |
} else if(!checkEmailType(email.value)) { | |
failLoginEmail.classList.remove("hide"); | |
failLoginBlank.classList.add("hide"); | |
email.classList.add("fail-layout"); | |
} | |
checkAll() | |
}; |
failLoginBlank.classList.add("hide"); | ||
email.classList.add("fail-layout"); | ||
} | ||
checkAll() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
모든 이벤트 핸들러에 checkAll
함수를 사용해서 인풋태그를 확인하고 버튼의 활성화를 체크를 하는 것 같아요. form
태그에 이벤트 핸들러를 달아서 다른 요소에서 발생한 이벤트의 캡쳐링 단계에 form
요소가 그것을받아서 한번만 checkAll
함수를 작성 할 수 있지 않을까요? ㅎㅎ
|
스프린트미션 수고하셨습니다 ! |
요구사항
체크리스트 [기본]
로그인
이메일 input에서 focus out 할 때, 값이 없을 경우 input에 빨강색 테두리와 아래에 “이메일을 입력해주세요.” 빨강색 에러 메세지를 보입니다.
이메일 input에서 focus out 할 때, 이메일 형식에 맞지 않는 경우 input에 빨강색 테두리와 아래에 “잘못된 이메일 형식입니다” 빨강색 에러 메세지를 보입니다.
비밀번호 input에서 focus out 할 때, 값이 없을 경우 아래에 “비밀번호를 입력해주세요.” 에러 메세지를 보입니다
비밀번호 input에서 focus out 할 때, 값이 8자 미만일 경우 아래에 “비밀번호를 8자 이상 입력해주세요.” 에러 메세지를 보입니다.
input 에 빈 값이 있거나 에러 메세지가 있으면 ‘로그인’ 버튼은 비활성화 됩니다.
input 에 유효한 값을 입력하면 ‘로그인' 버튼이 활성화 됩니다.
활성화된 ‘로그인’ 버튼을 누르면 “/items” 로 이동합니다
회원가입
이메일 input에서 focus out 할 때, 값이 없을 경우 input에 빨강색 테두리와 아래에 “이메일을 입력해주세요.” 빨강색 에러 메세지를 보입니다.
이메일 input에서 focus out 할 때, 이메일 형식에 맞지 않는 경우 input에 빨강색 테두리와 아래에 “잘못된 이메일 형식입니다” 빨강색 에러 메세지를 보입니다.
닉네임 input에서 focus out 할 때, 값이 없을 경우 input에 빨강색 테두리와 아래에 “닉네임을 입력해주세요.” 빨강색 에러 메세지를 보입니다.
비밀번호 input에서 focus out 할 때, 값이 없을 경우 아래에 “비밀번호를 입력해주세요.” 에러 메세지를 보입니다
비밀번호 input에서 focus out 할 때, 값이 8자 미만일 경우 아래에 “비밀번호를 8자 이상 입력해주세요.” 에러 메세지를 보입니다.
비밀번호 input과 비밀번호 확인 input의 값이 다른 경우, 비밀번호 확인 input 아래에 “비밀번호가 일치하지 않습니다..” 에러 메세지를 보입니다.
input 에 빈 값이 있거나 에러 메세지가 있으면 ‘회원가입’ 버튼은 비활성화 됩니다.
input 에 유효한 값을 입력하면 ‘회원가입' 버튼이 활성화 됩니다.
활성화된 ‘회원가입’ 버튼을 누르면 “/signup” 로 이동합니다
체크리스트 [심화]
눈 모양 아이콘 클릭시 비밀번호의 문자열이 보이기도 하고, 가려지기도 합니다.
비밀번호의 문자열이 가려질 때는 눈 모양 아이콘에는 사선이 그어져있고, 비밀번호의 문자열이 보일 때는 사선이 없는 눈 모양 아이콘이 보이도록 합니다.
주요 변경사항
스크린샷
멘토에게