일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 리액트네이티브
- 다중map
- 구조분해할당
- 다음은 메인페이지
- wescanner
- next.js
- Threppa
- 일본 우편번호 api
- Tanstack Query
- javascript
- wecode
- useEffect
- miniproject
- css
- ToyProject
- JS
- html
- React
- react-hook-form
- useForm
- 처음부터 배포까지
- 문제
- toy project
- 팀프로젝트
- project
- TIL
- mini
- 이중map
- React-native
- teamproject
- Today
- Total
블로그 이름을 입력해주세요
인스타그램 클론코딩 로그인 페이지 본문
부트캠프 수강 중 진행한 인스타그램 클론 코딩을 다시 봅니다
완성

여기서는 로그인 버튼 활성화와 비활성화,
그리고 아이디 유효성 검사를 하였습니다
const idInput = document.querySelector('.inputId');
const passwordInput = document.querySelector('.inputPassword');
const disabledButton = document.querySelector('.mainBtn');
먼저 각각 ID input, Password input button에 변수를 담아줬습니다
ID input
idInput.addEventListener('input', () => {
if ((idInput.value !== "") && (idInput.value.indexOf("@") !== -1)) {
disableButtonOn();
} else {
disableButtonOff();
}
});
idinput에 이벤트리스너를 주어 기능을 구현했습니다
input이벤트를 주었으며 idinput의 value 값이 공백일 때 alert을 띄워 줄 조건과 id창에 '@' 문자열이 없을 때
로그인 버튼이 비활성화될 수 있게 if문 안에 같이 비교해 주었습니다
Password input
passwordInput.addEventListener('input', () => {
if ((passwordInput.value !== "") && (passwordInput.value.length > 5)) {
disableButtonOn();
} else {
disableButtonOff();
}
});
passwordinput도 마찬가지로 이벤트 리스너에 input 이벤트
그리고 if문안에 조건식 패스워드가 공백이 아닐 때 반대로 활성화 그리고 패스워드의 길이가 5보다 크면 로그인 버튼 활성화 그렇게 같이 조건을 비교합니다
disableButtonOn()
disableButtonOff()
function disableButtonOn() {
disabledButton.disabled = false;
disabledButton.style.opacity = "1";
disabledButton.classList.add('cursorPointer');
}
function disableButtonOff() {
disabledButton.disabled = true;
disabledButton.style.opacity = "0.6";
disabledButton.classList.remove('cursorPointer');
}
버튼의 활성화와 비활성화 함수입니다
disabled = false가 활성화
disabled = true가 비활성화입니다
style.opacity 투명도로 활성화와 비활성화를 구분해주고
마지막으로 class추가에 cursorPinter 기능을 넣어 활성화가 되었을 때 클래스가 부착
비활성화일 때 탈착방식으로 구현하였습니다
로그인 활성화 시 메인 페이지로 이동
function loginButtonClickPage() {
let loginButton = document.querySelector('.mainBtn');
loginButton.addEventListener('click', () => {
window.location.href = "./main.html"
})
}
loginButtonClickPage();
버튼에 이벤트 리스너를 부여하여 문서의 이동을 주었습니다
전체 코드. JS
// login Button 활성 / 비활성
function inputValueSpotlight() {
const idInput = document.querySelector('.inputId');
const passwordInput = document.querySelector('.inputPassword');
const disabledButton = document.querySelector('.mainBtn');
function disableButtonOn() {
disabledButton.disabled = false;
disabledButton.style.opacity = "1";
disabledButton.classList.add('cursorPointer');
}
function disableButtonOff() {
disabledButton.disabled = true;
disabledButton.style.opacity = "0.6";
disabledButton.classList.remove('cursorPointer');
}
idInput.addEventListener('input', () => {
if ((idInput.value !== "") && (idInput.value.indexOf("@") !== -1)) {
disableButtonOn();
} else {
disableButtonOff();
}
});
passwordInput.addEventListener('input', () => {
if ((passwordInput.value !== "") && (passwordInput.value.length > 5)) {
disableButtonOn();
} else {
disableButtonOff();
}
});
}
inputValueSpotlight();
// login Button Click시 page 이동
function loginButtonClickPage() {
let loginButton = document.querySelector('.mainBtn');
loginButton.addEventListener('click', () => {
window.location.href = "./main.html"
})
}
loginButtonClickPage();
많이 어렵습니다 로그인 하나에 실제론 이보다 더 많은 기능이 들어갈 거라는 걸 이를 통해 알게 되었습니다
코드의 가독성을 위해 설계와 같이 생각해보고 짜는 게 상당히 어렵고,
간단한 기능 하나인데도 불구하고
평소의 뇌로는 1 다음 바로 5, 6을 생각하면 될 거 같지만
코드를 짤 때는 1 다음이 1.1이 되게끔 생각하는 게 아직 많이 힘듭니다
'miniProject' 카테고리의 다른 글
[Team Project] 쓰레빠 Threppa Project 2 mamuree~ (0) | 2022.07.02 |
---|---|
[Team Project] 크록스(Crocs) 1 (0) | 2022.06.25 |
[miniProject] google Momentum 만들기_02(React) (0) | 2022.04.14 |
[miniProject] google Momentum 만들기_01(React) (0) | 2022.04.05 |
[miniproject] javascript로 blog 만들어보기 3(마무리) (0) | 2022.03.14 |