-
Notifications
You must be signed in to change notification settings - Fork 0
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
Basic 김지연 sprint3 #1
The head ref may contain hidden characters: "basic-\uAE40\uC9C0\uC5F0-sprint3"
Changes from all commits
68bc3aa
2647ffa
f8e0dcc
2a2208e
d98fca9
7a01e75
47bec06
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -118,14 +118,12 @@ | |
customError: '비밀번호가 일치하지 않습니다.' | ||
} | ||
} | ||
|
||
window.addEventListener('load', () => { | ||
const form = document.querySelector('form'); | ||
const visibleBtn = form.querySelectorAll('input[type="checkbox"]'); | ||
const inputs = form.querySelectorAll('input[required]'); | ||
const button = form.querySelector('button'); | ||
const userInputs = { email: '', nickname: '', password: '', '[check-password]': '' }; | ||
|
||
for (const input of inputs) { | ||
userInputs[input.id] = input; | ||
input.addEventListener('change', () => { | ||
|
@@ -141,19 +139,20 @@ | |
} | ||
input.checkValidity(); | ||
const formData = new FormData(form); | ||
const errMsg = input.parentElement.nextElementSibling | ||
const errMsg = input.nextElementSibling.tagName === 'P' ? input.nextElementSibling : input.parentElement.nextElementSibling; | ||
errMsg.classList.add('fade-in'); | ||
if (input.validity.valid === true) { | ||
errMsg.textContent = ''; | ||
} else { | ||
for (const errType in input.validity) { | ||
if (input.validity[errType] === true) { | ||
if (errType !== 'valid' && input.validity[errType] === true) { | ||
errMsg.textContent = errMsgType[input.id][errType] ?? input.placeholder; | ||
|
||
} | ||
} | ||
} | ||
}, { signal: signal }); | ||
} | ||
|
||
for (const btn of visibleBtn) { | ||
btn.addEventListener('click', (e) => { | ||
e.target.style.backgroundImage = e.target.checked ? 'url(../images/icon/show-off.svg)' : 'url(../images/icon/show-on.svg)'; | ||
|
@@ -164,17 +163,13 @@ | |
} | ||
}, { signal: signal }); | ||
} | ||
|
||
form.addEventListener('formdata', (e) => { | ||
Array.from(inputs).every(input => { | ||
if (input.validity.valid === true) { | ||
button.classList.replace('bg-gray400', 'bg-primary'); | ||
} else { | ||
button.classList.replace('bg-primary', 'bg-gray400'); | ||
} | ||
}); | ||
if (Array.from(inputs).every(input => input.validity.valid)) { | ||
button.classList.replace('bg-gray400', 'bg-primary'); | ||
} else { | ||
button.classList.replace('bg-primary', 'bg-gray400'); | ||
} | ||
}, { signal: signal }); | ||
|
||
button.onclick = () => { | ||
inputs.forEach(input => input.reportValidity()); | ||
if ([...inputs].every(input => input.validity.valid)) { | ||
|
@@ -183,14 +178,17 @@ | |
document.querySelector('dialog button').onclick = () => { | ||
document.querySelector('dialog').close(); | ||
} | ||
document.querySelector('dialog').showModal(); | ||
} else { | ||
window.location.pathname = '/pages/sign-in.html'; | ||
document.querySelector('dialog p').textContent = '회원가입이 완료되었습니다.'; | ||
document.querySelector('dialog button').onclick = () => { | ||
document.querySelector('dialog').close(); | ||
window.location.pathname = '/pages/sign-in.html'; | ||
} | ||
Comment on lines
+182
to
+186
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion 중복된 코드 리팩토링을 고려해주세요
다음과 같이 수정할 수 있습니다: if (USER_DATA_MAP.has(userInputs.email.value)) {
document.querySelector('dialog p').textContent = '사용 중인 이메일입니다.';
} else {
document.querySelector('dialog p').textContent = '회원가입이 완료되었습니다.';
+ document.querySelector('dialog button').onclick = () => {
+ document.querySelector('dialog').close();
+ window.location.pathname = '/pages/sign-in.html';
+ }
}
- document.querySelector('dialog button').onclick = () => {
- document.querySelector('dialog').close();
- }
document.querySelector('dialog').showModal(); 또는
회원가입 완료 시 사용자 데이터 저장이 필요합니다 회원가입이 완료되었을 때, 새로운 사용자의 데이터를 회원가입 완료 시 다음과 같이 사용자 데이터를 저장하는 로직을 추가하는 것을 제안합니다: if (USER_DATA_MAP.has(userInputs.email.value)) {
// 기존 코드 유지
} else {
// 기존 코드 유지
+ USER_DATA_MAP.set(userInputs.email.value, {
+ nickname: userInputs.nickname.value,
+ password: userInputs.password.value
+ });
} 이렇게 하면 가입한 사용자가 로그인 시도 시 올바르게 인증될 수 있습니다.
|
||
} | ||
document.querySelector('dialog').showModal(); | ||
} | ||
} | ||
}); | ||
|
||
window.addEventListener('unload', () => { | ||
controller.abort(); | ||
}); | ||
|
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.
input.nextElementSibling
가 null일 수 있으므로 안전하게 접근해주세요input.nextElementSibling
가 존재하지 않을 경우.tagName
에 접근하면 오류가 발생합니다. 이를 방지하기 위해input.nextElementSibling
의 존재 여부를 먼저 확인하는 조건을 추가하는 것이 좋습니다.다음과 같이 수정할 수 있습니다:
📝 Committable suggestion