Skip to content

Commit 1caa36a

Browse files
week4
1 parent 06a2425 commit 1caa36a

File tree

3 files changed

+120
-5
lines changed

3 files changed

+120
-5
lines changed

css/sign.css

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,11 @@ main{
8080
background: var(--white-color, #FFF);
8181
}
8282

83+
/* 포커스 아웃*/
84+
.user .focused {
85+
border-color: var(--red-color, #ff5b56);
86+
}
87+
8388
.user input:focus{
8489
border-radius: 8px;
8590
border: 1px solid var(--primary-color, #6D6AFE);
@@ -95,19 +100,39 @@ main{
95100
position: relative;
96101
}
97102

103+
.error_massage_id{
104+
margin-top: 5px;
105+
font-size: 14px;
106+
font-weight: 400;
107+
color: var(--red-color, #FF5B56);
108+
}
109+
110+
.error_massage_pw{
111+
height: 10px;
112+
margin-top: 5px;
113+
font-size: 14px;
114+
font-weight: 400;
115+
color: var(--red-color, #FF5B56);
116+
}
117+
98118
.password_icon{
99119
position: absolute;
100-
bottom: 15px;
120+
bottom: 35px;
101121
right: 15px;
102122
}
103123

104124
.password_icon img{
125+
display: block;
105126
width: 16px;
106127
height: 16px;
107128
fill: #FFF;
108129
cursor: pointer;
109130
}
110131

132+
.password_icon .pw_hide{
133+
display: none;
134+
}
135+
111136
.user_login_form button{
112137
border: none;
113138
width: 100%;

js/login.js

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
2+
const email = document.querySelector("#user_email");
3+
const password = document.querySelector("#user_password");
4+
const error_massage_id = document.querySelector(".error_massage_id");
5+
const error_massage_pw = document.querySelector(".error_massage_pw");
6+
const submit_btn = document.querySelector(".submit_btn");
7+
const user_login_form = document.querySelector(".user_login_form");
8+
9+
const pw_block_icon = document.querySelector(".pw_block");
10+
const pw_hide_icon = document.querySelector(".pw_hide");
11+
12+
const emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
13+
14+
function handleFocus(element, isFocused) {
15+
element.classList.toggle('focused', isFocused);
16+
}
17+
18+
email.addEventListener('blur', function(e) {
19+
e.preventDefault();
20+
const email_value = email.value;
21+
const isValidEmail = emailRegex.test(email_value);
22+
23+
if (!isValidEmail) {
24+
console.log('성공');
25+
error_massage_id.innerText = "올바른 이메일 주소가 아닙니다."
26+
} else {
27+
console.log('실패');
28+
error_massage_id.innerText = ""
29+
}
30+
31+
// Apply focus-related styles
32+
handleFocus(email, !isValidEmail);
33+
});
34+
35+
password.addEventListener('blur', function(e) {
36+
e.preventDefault();
37+
const password_value = password.value;
38+
let control = true;
39+
40+
if (password_value === "") {
41+
console.log('성공');
42+
error_massage_pw.innerText = "비밀번호를 입력해 주세요"
43+
control = true;
44+
} else {
45+
console.log('실패');
46+
error_massage_pw.innerText = ""
47+
control = false;
48+
}
49+
50+
// Apply focus-related styles
51+
handleFocus(password, control);
52+
});
53+
54+
function signIn(email, password) {
55+
if (email == 'test@codeit.com' && password == 'codeit101') {
56+
window.location.replace('./folder.html');
57+
} else {
58+
error_massage_id.innerText = '이메일을 확인해 주세요.';
59+
error_massage_pw.innerText = '비밀번호를 확인해 주세요.';
60+
}
61+
}
62+
//버튼에 클릭,엔터 이벤트시에 로그인 함수 기능 추가
63+
submit_btn.addEventListener('click', function (e) {
64+
e.preventDefault();
65+
signIn(email.value, password.value);
66+
});
67+
submit_btn.addEventListener('keypress', function (e) {
68+
e.preventDefault();
69+
if (e.key === 'Enter') {
70+
signIn(email.value, password.value);
71+
}
72+
});
73+
74+
pw_block_icon.addEventListener("click" , () => {
75+
pw_block_icon.style.display = "none"
76+
pw_hide_icon.style.display = "block"
77+
password.type = "text"
78+
})
79+
80+
pw_hide_icon.addEventListener("click" , () => {
81+
pw_hide_icon.style.display = "none"
82+
pw_block_icon.style.display = "block"
83+
password.type = "password"
84+
})
85+
86+
87+

sign.html

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<meta charset="UTF-8">
55
<meta name="viewport" content="width=device-width, initial-scale=1.0">
66
<link rel="stylesheet" href="/css/sign.css">
7+
<script src="./js/login.js" defer></script>
78
<title>signin</title>
89
</head>
910
<body>
@@ -13,20 +14,22 @@
1314
<a href="/"><img src="/icon/logo.svg" type="image/svg+xml" alt="logo"></a>
1415
<p>회원이 아니신가요? <a href="/signup.html">회원 가입하기</a></p>
1516
</div>
16-
<form action="" name="user_login_form" class="user_login_form">
17+
<form name="user_login_form" class="user_login_form">
1718
<div class="user_email user">
1819
<label for="user_email">이메일</label>
1920
<input type="text" id="user_email" name="user_email">
21+
<p class="error_massage_id"></p>
2022
</div>
2123
<div class="user_password user">
2224
<label for="user_password">비밀번호</label>
2325
<input type="password" id="user_password" name="user_password">
26+
<p class="error_massage_pw"></p>
2427
<div class="password_icon">
25-
<img src="/icon/eye-off.svg" alt="비밀번호 가리기">
26-
<img src="/icon/eye-on.svg" alt="비밀번호 보이기">
28+
<img src="/icon/eye-off.svg" alt="비밀번호 가리기" class="pw_hide">
29+
<img src="/icon/eye-on.svg" alt="비밀번호 보이기" class="pw_block">
2730
</div>
2831
</div>
29-
<button type="submit">로그인</button>
32+
<button type="submit" class="submit_btn">로그인</button>
3033
</form>
3134
<div class="social_login">
3235
<p>소셜로그인</p>

0 commit comments

Comments
 (0)