๐ id,pw ์ ๋ ฅ ์ ๋ก๊ทธ์ธ ๋ฒํผ ํ์ฑํ ํ๊ธฐ
๋ก๊ทธ์ธ, ํ์๊ฐ์
๊ณผ ๊ฐ์ ์
๋ ฅํผ ํ์ด์ง์์ ๋ฐ์ดํฐ๊ฐ ๋ชจ๋ ์
๋ ฅ๋๋ฉด
ํ๋จ ํ์ธ(๋ค์,์ ์ถ ๋ฑ)๋ฒํผ์ด ๋นํ์ฑํ์๋ค๊ฐ ํ์ฑํ๋๋ ๊ธฐ๋ฅ์ ํ๋ก ํธ์์ ์คํฌ๋ฆฝํธ๋ก ๊ตฌํํด๋ณด๊ณ ์ ํ๋ค.
๋ณต์กํ ์
๋ ฅํผ ํ์ด์ง๋ฅผ ์ ํ๊ธฐ ์ ์ ๊ฐ๋จํ ๋ก๊ทธ์ธ ํ์ด์ง์์ ๋จผ์ ๊ตฌํ ํด๋ณด๊ณ ์ ํ๋ค.
๐๋ชฉํ ๊ตฌํ ๊ธฐ๋ฅ
1. id,pw์ value๊ฐ์ด ๋ชจ๋ true๋ฉด ๋ฒํผ ํ์ฑํ ์์ผ์ค๋ค.
2. id,pw์ value๊ฐ์ด ๋ ์ค ํ๋๋ผ๋ false๋ฉด ๋ฒํผ ๋นํ์ฑํ ์ฒ๋ฆฌํด์ค๋ค.
โ ๊ตฌํ ๋ฐฉ๋ฒ
- html ๊ตฌ์กฐ
<section class="contents login_contents">
<div class="container">
<!-- ์ ํจ์ฑ ๊ฒ์ฌ form_wrap_line ์ error ์ถ๊ฐ -->
<div class="form_wrap_line login_top">
<div class="form-group-wrap">
<div class="form-group">
<input type="text" id="user_id" class="form-control box" placeholder="์นด์นด์ค๊ณ์ " title="์นด์นด์ค๊ณ์ ">
</div>
<div class="form-group">
<input type="password" id="user_pw" class="form-control box" placeholder="๋น๋ฐ๋ฒํธ" title="๋น๋ฐ๋ฒํธ">
</div>
</div>
<div class="btn-group">
<button type="button" id="btn_login" class="btn btn_lg btn_primary" disabled>๋ก๊ทธ์ธ</button>
</div>
<p class="caution">์นด์นด์ค๊ณ์ ๋๋ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ค์ ํ์ธํด์ฃผ์ธ์</p>
</div>
<div class="btn-login-util">
<button type="button" class="btn_find_id">์นด์นด์ค๊ณ์ ์ฐพ๊ธฐ</button>
<button type="button" class="btn_find_pw">๋น๋ฐ๋ฒํธ ์ฌ์ค์ </button>
</div>
</div>
</section>
- ๊ณตํต ๋ณ์ ์ ์ธ
const formWrap = document.querySelector('.form_wrap_line');
const idForm = document.querySelector('#user_id');
const pwForm = document.querySelector('#user_pw');
const loginButton = document.querySelector('#btn_login');
1. booleanํจ์๋ฅผ ์ด์ฉํ๋ค.
let idCheck = false;
let pwCheck = false;
const pushValue = () => {
idForm.addEventListener('keyup', () => {
idCheck = true
});
pwForm.addEventListener('keyup', () => {
pwCheck = true
});
}
pushValue();
- ์ฝ๋๊ฐ ๊ธธ์ด์ง๋ค.
- ํ๋ฒ ํ์ฑํ๋ ๋ฒํผ์ด ๋ค์ ๋นํ์ฑํ๋ก ๋์๊ฐ์ง ์๋๋ค.
2. pw ์ธํ๋ฐ์ค value๊ฐ์ ๊ธฐ์ค์ผ๋ก true๊ฐ ๋๋ฉด, ์ด๋ฒคํธ๋ฅผ ์ค๋ค.
const pushValue () => {
pwForm.addEventListener('keyup', () => {
if(idForm.value && pwForm.value){
loginButton.disabled = false;
} else {
loginButton.disabled = true;
}
});
}
pushValue();
- ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด์ง๋ค.
- pw input value๊ฐ์ ๊ธฐ์ค์ผ๋ก ํ์ฌ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
- id ๊ฐ์ด ์ง์์ก์ ๋, ๋ฒํผ์ด ๋นํ์ฑํ๋์ง ์๋๋ค.
- pw ๊ฐ์ด ๋จผ์ ์ ๋ ฅ๋๊ณ , id ๊ฐ์ ์ ๋ ฅํ๋ฉด ๋ฒํผ์ด ํ์ฑํ๋์ง ์๋๋ค.
3. ์ด๋ฒคํธ ํจ์๋ฅผ ๋ง๋ค์ด์ ์ด๋ฒคํธ๋ฅผ ๋ถ์ฌํด์ค๋ค.
idForm.addEventListener('keyup', activeEvent);
pwForm.addEventListener('keyup', activeEvent);
loginButton.addEventListener('click', errorEvent);
function activeEvent() {
switch(!(idForm && pwForm)){
case true : loginButton.disabled = true; break;
case false : loginButton.disabled = false; break
}
}
function errorEvent() { // ์ด๊ฑด ๊ทธ๋ฅ error ๋ฌธ๊ตฌ ์ถ๋ ฅํด๋ณด๋ ค๊ณ ๋ง๋ค์ด๋ด.(์ ๊ฒฝ์์จ๋๋จ)
formWrap.classList.add('error');
}
- id, pw ๊ฐ ๋ชจ๋ ์
๋ ฅ๋์ ๋ โก
!(true) = false
โก ๋ฒํผ ํ์ฑํ - id, pw ์ค ํ๋๋ง ์
๋ ฅ๋์ ๋ โก
!(false) = true
โก ๋ฒํผ ๋นํ์ฑํ
โจ์ต์ข ๊ตฌํ ๊ฒฐ๊ณผ
๋์์ธ์ด ์ฌ์ฌํด์ ์นดํก ๋ก๊ทธ์ธ ํ๋ฉด ์ฐธ๊ณ ํจ๐
์ ํจ์ฑ ๊ฒ์ฌ๋ error๋ฌธ๊ตฌ ์ถ๋ ฅํด๋ณด๋ ค๊ณ ๊ทธ๋ฅ ๋ง๋ค์ด๋ด๐
์ฐธ๊ณ
https://cocoon1787.tistory.com/700
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ id,pw ์ ๋ ฅ ์ ๋ก๊ทธ์ธ ๋ฒํผ ํ์ฑํ ํ๊ธฐ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@ahn-sujin/idpw-์ ๋ ฅ-์-๋ก๊ทธ์ธ-๋ฒํผ-ํ์ฑํ-ํ๊ธฐ์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค