[๐Ÿ’ป ์ฝ”๋“œ์Šคํ…Œ์ด์ธ  FE 44๊ธฐ] ๋ถ€ํŠธ์บ ํ”„ - ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ณผ์ œ

JiEunยท2023๋…„ 3์›” 8์ผ
0
post-thumbnail

โœ”๏ธ ์‹œ์ž‘

ํšŒ์›๊ฐ€์ž… ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ณผ์ œ ์ž‘์—…์„ ์ง„ํ–‰ํ–ˆ๋‹ค.
์ผ๋ฐ˜ ๊ณผ์ œ๋ฅผ ์™„๋ฃŒํ•˜๋ฉด ์‹ฌํ™” ๊ณผ์ œ ๋ถ€ํ„ฐ CSS์ž‘์—…๊นŒ์ง€ ์ง„ํ–‰ํ–ˆ๋‹ค.

ํ”ผ๊ทธ๋งˆ๋กœ ํฐ ํ‹€, ๋””์ž์ธ ์ž‘์—… ํ›„ ์ง„ํ–‰ํ–ˆ๋‹ค.


๐Ÿ“ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ

ํšŒ์›๊ฐ€์ž… ์–‘์‹์„ ์ž‘์„ฑํ•  ๋•Œ ํ•„์ˆ˜ ์š”์†Œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ฑฐ๋‚˜, ์ž…๋ ฅ์ด ์ž˜ ๋ชป ๋˜์—ˆ์„ ๋•Œ ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.

๐Ÿ“ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ณผ์ œ

๐Ÿ“Œ ์ผ๋ฐ˜๊ณผ์ œ ์ฃผ์ œ

  1. '๊ธ€์ž ์ˆ˜๊ฐ€ 4๊ฐœ ์ด์ƒ'์ด๋ฉด '์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•„์ด๋””์ž…๋‹ˆ๋‹ค' ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ
  2. ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ๋ž€๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ ์ž…๋ ฅ๋ž€์ด ๋™์ผํ• ๋•Œ์™€ ๊ทธ๋Ÿฌ์ง€ ์•Š์„ ๋•Œ ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ

๐Ÿ’ป ์‚ฌ์šฉํ•œ ๋ฉ”์„œ๋“œ, ์ด๋ฒคํŠธ

  • quetSelector : HTML์š”์†Œ๋ฅผ css selector ํ˜•์‹์œผ๋กœ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.
  • onkeyup : ํ‚ค๋ณด๋“œ ์ž…๋ ฅ ๋“ฑ์— ๋”ฐ๋ผ ๋ฐ˜์‘ํ•œ๋‹ค.
  • classList.add/classList.remove : class๋ฅผ ์ถ”๊ฐ€/์‚ญ์ œํ•œ๋‹ค.
  1. '๊ธ€์ž ์ˆ˜๊ฐ€ 4๊ฐœ ์ด์ƒ'์ด๋ฉด '์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•„์ด๋””์ž…๋‹ˆ๋‹ค' ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ
// ์กฐ๊ฑด๋ฌธ์„ ์ด์šฉํ•ด ํ•ด๋‹น ์กฐ๊ฑด๋ฌธ์— ๋”ฐ๋ผ class hide ์ถ”๊ฐ€/์‚ญ์ œ
elInputUserName.onkeyup = function(){
  let inputUserName = elInputUserName.value;
  if(isMoreThan4Length(inputUserName){
    elSuccessMsg.classList.remove("hide");
    elFailureMsg.classList.add("hide");
  }else{
    elFailureMsg.classList.remove("hide");
    elSuccessMsg.classList.add("hide");   
  }
}
  1. ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ๋ž€๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ ์ž…๋ ฅ๋ž€์ด ๋™์ผํ• ๋•Œ์™€ ๊ทธ๋Ÿฌ์ง€ ์•Š์„ ๋•Œ ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ
//๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ // ์•„์ด๋”” ๊ฐ’๊ณผ ๋™์ผํ•˜๋‹ค.
elInputPasswordRe.onkeyup = function(){
  let password1 = elInputPassword.value;
  let password2 = elInputPasswordRe.value;
  if(isMatch(password1,password2)){
    elMisMathMsg.classList.remove("hide");
  }else{
    elMisMathMsg.classList.add("hide");
  }
}

๐Ÿ“Œ ์‹ฌํ™”๊ณผ์ œ ์ฃผ์ œ

์ผ๋ฐ˜ ๊ณผ์ œ ์ฃผ์ œ ๋ณด๋‹ค ์ข€ ๋” ์„ธ๋ฐ€ํ•˜๊ฒŒ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด์˜€๋‹ค.

  • ์•„์ด๋””๋Š” ์˜์–ด ๋˜๋Š” ์ˆซ์ž๋งŒ ๊ฐ€๋Šฅํ•˜๋„๋ก
  • ๋น„๋ฐ€ ๋ฒˆํ˜ธ๋Š” ์ตœ์†Œ 8์ž ์ด์ƒ, ์˜์–ด/์ˆซ์ž์™€ ํŠน์ˆ˜๋ฌธ์ž ํ•˜๋‚˜๋Š” ํฌํ•จ๋˜์–ด ์žˆ๋„๋ก

๋‘ ์กฐ๊ฑด์€ ๋‹คํ–‰ํžˆ ๋ฏธ๋ฆฌ ์ œ์‹œ๋˜์–ด ์žˆ์—ˆ๊ณ  ์ผ๋ฐ˜ ๊ณผ์ œ์—์„œ ํ’€์—ˆ๋˜ ์ฝ”๋“œ์—์„œ ์กฐ๊ธˆ๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ๋๋‹ค.

๐Ÿ’ป ๊ธฐ๋Šฅ ์ถ”๊ฐ€

1. ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณด์ด๊ธฐ/์ˆจ๊ธฐ๊ธฐ

๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณด์ด๊ธฐ/์ˆจ๊ธฐ๊ธฐ

// ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณด์ด๊ธฐ/๊ฐ์ถ”๊ธฐ
function showStrFnc1(){
  if(elInputPassword.type === "password"){
    elInputPassword.setAttribute("type", "text");
    showStr1.textContent = "visibility";
  }else{
    elInputPassword.setAttribute("type", "password");
    showStr1.textContent = "visibility_off";
  }  
}
  • ๋น„๋ฐ€๋ฒˆํ˜ธ input type์ด password์ธ์ง€ ์กฐ๊ฑด๋ฌธ ์ž‘์—…
  • ๋งž๋‹ค๋ฉด setAttribute()๋ฉ”์„œ๋“œ ์ด์šฉํ•ด type ์†์„ฑ password์—์„œ text๋กœ ๋ณ€๊ฒฝ
  • ์ด์— ๋งž๊ฒŒ ์•„์ด์ฝ˜๋„ ๊ฐ™์ด ๋ณ€๊ฒฝ (์•„์ด์ฝ˜์€ ๊ตฌ๊ธ€ ์›น ์•„์ด์ฝ˜์„ ์‚ฌ์šฉํ–ˆ๋‹ค.)

--- 03.29 ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณด์ด๊ธฐ/๊ฐ์ถ”๊ธฐ ์žฌ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ˆ˜์ •ํ•˜๊ธฐ ---

์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ž‘์—…ํ•˜๊ธฐ

  • ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ์ค€๋‹ค.
  • ํ•˜๋‚˜์˜ ํ•จ์ˆ˜๋กœ ์—ฌ๋Ÿฌ addEventListener๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ๋‹ค.

2. ์ž…๋ ฅ์ฐฝ ์ „๋ถ€ ์ž‘์„ฑ๋  ๊ฒฝ์šฐ ํŒ์—…์ฐฝ ๋„์šฐ๊ธฐ

์ž…๋ ฅ์ฐฝ ์ „๋ถ€ ์ž‘์„ฑ๋  ๊ฒฝ์šฐ ํŒ์—…์ฐฝ ๋„์šฐ๊ธฐ

//submit
function joinFormFnc(event){
  event.preventDefault(); // submit์˜ ๊ธฐ๋ณธ ๋™์ž‘ ๋ง‰๊ธฐ
  alert("ํšŒ์›๊ฐ€์ž…์— ์„ฑ๊ณตํ•˜์…จ์Šต๋‹ˆ๋‹ค.");
}

joinForm.addEventListener("submit", joinFormFnc);
<!--html formํƒœ๊ทธ์— ์ถ”๊ฐ€-->
<form id="join-form" onsubmit="joinFormFnc()" >
  ...
</form>
  • input, button์„ <form>ํƒœ๊ทธ๋กœ ๊ฐ์‹ธ์ฃผ๊ธฐ
  • addEventListener๋กœ submit์ด๋ฒคํŠธ ์ด์šฉ

โ—๏ธform์„ submitํ•  ๊ฒฝ์šฐ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ƒˆ๋กœ๊ณ ์นจ ํ•œ๋‹ค. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด event.preventDefault()๋ฅผ ํ•ด์ค€๋‹ค. ํ•ด๋‹น ์ฝ”๋“œ๋Š” <form>ํƒœ๊ทธ์˜ ๊ธฐ๋ณธ ์ž‘๋™์„ ๋ง‰์•„์ค€๋‹ค.

โ—๏ธsubmit์„ ํ–ˆ๋Š”๋ฐ๋„ ํŒ์—…์ฐฝ์ด ๋œจ์ง€ ์•Š์•„ ์•Œ์•„๋ณด๋‹ˆ <form> ํƒœ๊ทธ์— onsubmit="ํ•ด๋‹น ํ•จ์ˆ˜" ๋ฅผ ์ถ”๊ฐ€ํ•ด ์ค˜์•ผํ•œ๋‹ค.

๐Ÿ“Œ ์™„์„ฑ๋ณธ


โœ๏ธ ๋งˆ์น˜๋ฉฐ

์ฒ˜์Œ์—” ํŠœํˆ๋ฆฌ์–ผ์„ ๋ณด๋ฉด์„œ ์ง„ํ–‰ํ•˜๋Š”๊ฑฐ๋ผ ์ˆœ์กฐ๋กญ๊ฒŒ ์ง„ํ–‰ ๋˜์—ˆ๋‹ค.

์ดํ›„ css๋“ฑ์˜ ์ž‘์—…์„ ํ•˜๋ฉด์„œ ๋‹ค๋ฅธ ์ˆ˜๊ฐ•์ƒ ๋ถ„๋“ค์˜ ์ž‘์—…๋ฌผ์„ ๋ณด๋‹ˆ ๋ญ”๊ฐ€ ์š•์‹ฌ์ด ๋‚˜์„œ ์ด๊ฒƒ ์ €๊ฒƒ ์ถ”๊ฐ€ํ•˜๊ฒŒ ๋œ ๊ฑฐ ๊ฐ™๋‹ค.

์ด๋ฒˆ ๊ธฐํšŒ๋ฅผ ํ†ตํ•ด onsubmit=""์œผ๋กœ submit์„ ๋ณด๋‚ด๋Š” ๊ฑธ ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ 
ํ•จ์ˆ˜์— ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ „๋‹ฌ์ธ์ž๋ฅผ ํ†ตํ•ด ์žฌ์‚ฌ์šฉ ๋“ฑ์„ ํ•˜๋Š”๋ฐ ์œ ์šฉํ•œ ์ ๋„ ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค.

๋‹ค์Œ ํ•™์Šต์—๋Š” ์†”๋กœ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ง„ํ–‰๋œ๋‹ค๊ณ  ํ•œ๋‹ค.

์ด๊ฒƒ ๋˜ํ•œ ํŠœํˆ๋ฆฌ์–ผ์ด ์žˆ์ง€๋งŒ ๋‚ด๊ฐ€ ๋ฐœํœ˜ํ•  ์ˆ˜ ์žˆ๋Š” ์˜์—ญ์€ ๋ชจ๋‘ ๋ณด์—ฌ ์ค„ ์ˆ˜ ์žˆ๋„๋ก ๋…ธ๋ ฅํ•  ๊ฒƒ ์ด๋‹ค.

์ด๋ฒˆ ์†”๋กœ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์ด์ „์— ํ•˜์ง€ ๋ชปํ–ˆ๋˜ ๋ฐ˜์‘ํ˜•, ๋ผ์ดํŠธ/๋‹คํฌ ๋ชจ๋“œ, ์• ๋‹ˆ๋ฉ”์ด์…” ํšจ๊ณผ ๋“ฑ์„ ์ถ”๊ฐ€ํ•ด ๋ณผ๊นŒ ์ƒ๊ฐ ์ค‘์ด๋‹ค.

profile
๐Ÿ’ป ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๋ชฉํ‘œ๋กœ ์„ฑ์žฅ ์ค‘! (์•Œ์•„๋ดค๋˜ ๋‚ด์šฉ ๋“ฑ์„ ์ •๋ฆฌํ•˜๊ธฐ)

0๊ฐœ์˜ ๋Œ“๊ธ€