๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
JavaScript/Nomad Coders

[TIL] ๐Ÿ’ก Day 6 - ํ•จ์ˆ˜๋Š” ์ •๋ณด๋ฅผ ๋‹ด๊ณ 

by vividmin 2022. 3. 31.
320x100

โœ” ์ด ํฌ์ŠคํŒ…์€ ๋…ธ๋งˆ๋“œ์ฝ”๋” - "๋ฐ”๋‹๋ผ JS๋กœ ํฌ๋กฌ ์•ฑ ๋งŒ๋“ค๊ธฐ๋ฅผ ๋“ค์œผ๋ฉด์„œ ๊นƒํ—ˆ๋ธŒ์— ๊ธฐ๋กํ•œ ํ•„๊ธฐ๋ฅผ ์˜ฎ๊ธด ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

              ๐Ÿ“ ํ•จ์ˆ˜๋Š” ํ˜ธ์ถœ๋  ๋•Œ ํ•จ์ˆ˜ ์•ˆ์— ์ •๋ณด๋ฅผ ๋‹ด์€ ์ƒํƒœ๋กœ ์‹คํ–‰๋˜์–ด ์šฐ๋ฆฌ์—๊ฒŒ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•ด ์ค€๋‹ค.

 

 

๐ŸŒฑ Input์˜ value

๐Ÿ‘‰ ์‚ฌ์šฉ์ž๊ฐ€ Input์— ์ž…๋ ฅํ•œ ๊ฐ’์„ ๋ฐ›์•„์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž

  • loginInput object์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•œ property โ“
    value : ๊ธฐ๋ณธ์ ์œผ๋กœ input์•ˆ์— ์žˆ๋Š” ํ…์ŠคํŠธ๋ฅผ ์˜๋ฏธ
  • ์˜ˆ์‹œ ์ฝ”๋“œ
<!-- HTML ํŒŒ์ผ -->

<!-- ver1 --> 
<div id="login-form"> 
    <input type="text" placeholder="What is your name?"> 
    <button>Log In</button> 
</div> 
<!-- ver2 --> 
<form id="login-form"> 
    <input 
        required maxlength="15" 
        type="text" 
        placeholder="What is your name?"
    > 
    <input type="submit" value="Log in"> 
</form>
    // JS ํŒŒ์ผ

    // ver 1 - loginForm๋„ html element๋‹ˆ๊นŒ loginForm ์ด์šฉ
    const loginForm = document.getElementById('login-form');
    const loginInput = loginForm.querySelector('input');
    const loginBtn = loginForm.querySelector('button');

    // ver 2 - input๊ณผ button๋งŒ ๋”ฐ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ
    const loginInput = document.querySelector("#login-form input");
    const loginBtn = document.querySelector("#login-form button");

    function onLoginBtnClick() {
        // input์˜ value๊ฐ’์„ ๋ณผ ์ˆ˜ ์žˆ์Œ, ์ž…๋ ฅํ•˜๋ฉด ๋ณด์ž„
        console.dir(loginInput.value);      
        console.log("click");
    }

    loginBtn.addEventListener("click", onLoginBtnClick)

 

 

 

๐ŸŒฑ Input value์— ์กฐ๊ฑด ๊ฑธ๊ธฐ

๐Ÿ‘‰ user๊ฐ€ ์ž…๋ ฅํ•˜๋Š” ๊ฐ’์˜ ์œ ํšจ์„ฑ์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ์˜ˆ์‹œ ์ฝ”๋“œ
function onLoginBtnClick() { 

    console.log('hello', loginInput.value);
    /** 

    ์ด๋ ‡๊ฒŒํ•˜๋ฉด ๋ฌธ์ œ ๋ฐœ์ƒ
    → value๊ฐ’์ด ์—†์„ ๋•Œ๋Š” hello ๋นˆ์นธ์ด ๋‚˜์™€์„œ ๊ฐ’์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ๋ช…ํ™•ํ•˜๊ฒŒ 
      ์•Œ ์ˆ˜ ์—†๋‹ค.

    */ 

    // ๋Œ€์•ˆ ๐Ÿ‘‰ ์กฐ๊ฑด๋ฌธ ์ด์šฉํ•ด์„œ ์ œ์•ฝ ๊ฑธ๊ธฐ 
    const username = loginInput.value; 
    if (username === "") { 
        alert("Please write your name"); 
    }else if (username.length > 15) { 
        alert("Your name is too long."); 
    } 
} 

// ์ด ๋ฐฉ๋ฒ•๋„ ๊ดœ์ฐฎ๊ธฐ๋Š” ํ•˜์ง€๋งŒ ๋ธŒ๋ผ์šฐ์ €์˜ ๊ธฐ๋ณธ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹๋‹ค.
  • ๊ฐœ์„ ๋œ ๋ฐฉ๋ฒ•
  • input์•ˆ์— ์กฐ๊ฑด์„ ์ž…๋ ฅํ•˜๊ธฐ
    • required : input์ด ๋น„์–ด์žˆ๋Š” ๊ฐ’์ด๋ฉด ์•ˆ ๋œ๋‹ค.
    • maxlength : value์˜ ์ตœ๋Œ€๊ธธ์ด๋ฅผ ์ง€์ •.
  • ์˜ˆ์‹œ ์ฝ”๋“œ
<form id="login-form"> 
    <input 
        required 
        maxlength="15" 
        type="text" 
        placeholder="What is your name?"
    > 
    <input type="submit" value="Log in"> 
</form>
  • ์•„์ง ์กด์žฌํ•˜๋Š” ๋ฌธ์ œ์ โ“
    • form์•ˆ์— input์ด ์žˆ์œผ๋ฉด ์ œ์ถœ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์ง€ ์•Š๊ณ , Enter๋งŒ ๋ˆŒ๋Ÿฌ๋„ form ์ž์ฒด๊ฐ€ Submit ๋œ๋‹ค.
    • ํ•˜์ง€๋งŒ Form์ด Submit ๋  ๋•Œ๋งˆ๋‹ค ํŽ˜์ด์ง€๊ฐ€ ์ƒˆ๋กœ๊ณ ์นจ ๋˜๊ณ , input์— ์ ํžŒ value๊ฐ€ ์‚ฌ๋ผ์ง„๋‹ค.๐Ÿ˜ฑ
    ์ฆ‰, Form์ด ์ œ์ถœ๋  ๋•Œ ํŽ˜์ด์ง€๊ฐ€ reload ๋˜๋Š” ๊ฒƒ์„ ๋ง‰๊ณ , value๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•˜๋‹ค.๐Ÿค”

 

 

๐ŸŒฑ Event

๐Ÿ‘‰ Form์˜ Submit event ์กฐ์ž‘ํ•˜๊ธฐ

  • ํŽ˜์ด์ง€ ์ƒˆ๋กœ๊ณ ์นจ ๋ง‰๋Š” ๋ฐฉ๋ฒ•
    • browser๋Š” Form์•ˆ์˜ Input์—์„œ Enter๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ƒˆ๋กœ๊ณ ์นจ + Form submit ํ•˜๋„๋ก ์„ค์ •๋˜์–ด ์žˆ๋‹ค.
    • ์ด ๊ธฐ๋ณธ ๋™์ž‘์„ ๋ง‰์•„๋ณผ ๊ฒƒ์ด๋‹ค. → preventdefault() ์‚ฌ์šฉ
      preventDefault() = ๋ธŒ๋ผ์šฐ์ €์˜ ๊ธฐ๋ณธ ๋™์ž‘์„ ๋ง‰์•„์ฃผ๋Š” ํ•จ์ˆ˜
  • ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ์ผ์–ด๋‚˜๋Š” ์ผ
    • ์ด๋•Œ๊นŒ์ง€ ๋ฐฐ์šด ๋‚ด์šฉ์€ ํ•จ์ˆ˜์— ( ) ์ž‘์„ฑํ•˜๋ฉด ๋ฐ”๋กœ ์‹คํ–‰ํ•œ๋‹ค๋Š” ์˜๋ฏธ๋ผ๋Š” ๊ฒƒ!
    • ํ•˜์ง€๋งŒ ์ถ”๊ฐ€๋กœ ์•Œ์•„์•ผ ํ•  ๊ฐœ๋…์ด ์žˆ๋‹ค.
      • ์ •ํ™•ํ•˜๊ฒŒ ๋งํ•˜๋ฉด, ๋ธŒ๋ผ์šฐ์ €๋Š” onLoginSubmit() ๋งŒ์„ ํ•˜๊ณ  ์žˆ๋˜ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค!!
    โœจ ์‹ค์ œ๋กœ๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ → function(information) ํ˜•ํƒœ๋กœ ์‹คํ–‰ โž• ์ •๋ณด์ „๋‹ฌ์ด ๋™์‹œ์— ์ด๋ฃจ์–ด์ง„๋‹ค.๐Ÿ˜†

 

  • ์˜ˆ์‹œ ์ฝ”๋“œ
const loginForm = document.querySelector("#login-form");
const loginInput = document.querySelector("#login-form input");
/**
    ๋ธŒ๋ผ์šฐ์ €์™€ ์–ด๋–ค ๋‚ด์šฉ์„ ์ฃผ๊ณ ๋ฐ›๋Š”์ง€ ์•Œ๊ธฐ ์œ„ํ•ด์„œ 
    argument์ฃผ๊ณ  preventDefault์ถ”๊ฐ€.
    ์ด๋ฆ„์ด ๋ฌด์—‡์ธ์ง€๋Š” ์ƒ๊ด€์—†์Œ - tomato ์‚ฌ์šฉ
*/

function onLoginSubmit(tomato) {
    tomato.preventDefault() // '์ƒˆ๋กœ๊ณ ์นจ'์ด๋ผ๋Š” ๊ธฐ๋ณธ๋™์ž‘ ๋ง‰๊ธฐ
    console.log(tomato);
}

loginForm.addEventListener('submit', onLoginSubmit);

 

  • ๋ชจ๋“  function์˜ ์ฒซ ๋ฒˆ์งธ argument๋Š” ํ•ญ์ƒ ์ง€๊ธˆ ๋ง‰ ๋ฒŒ์–ด์ง„ ์ผ๋“ค(event)์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๋œ๋‹ค.
    ๐Ÿ‘‰ JS๊ฐ€ ๊ทธ ์ •๋ณด๋ฅผ ๋ฌด๋ฃŒ๋กœ ์ œ๊ณตํ•œ๋‹ค.
  • argument ๊ณต๊ฐ„๋งŒ ์ œ๊ณตํ•˜๋ฉด JS๊ฐ€ ์•Œ์•„์„œ ๋ฐฉ๊ธˆ ์ผ์–ด๋‚œ event์˜ ์ •๋ณด๋ฅผ ์ง€๋‹Œ argumenet๋ฅผ ์ฑ„์›Œ ๋„ฃ๋Š”๋‹ค
    ๐Ÿ‘‰ ์šฐ๋ฆฌ๋Š” ๊ณต๊ฐ„๋งŒ ์ œ๊ณตํ•˜๋ฉด ๋œ๋‹ค.
 
  • console.dir(argument)๋กœ ํ™•์ธ ๊ฐ€๋Šฅ
โœจ์ค‘์š”ํ•œ Point!
→ console์— ๋‚˜์˜ค๋Š” ์ •๋ณด๊ฐ€ ๋ฐฉ๊ธˆ ์‹คํ–‰๋œ event๋ผ๋Š” ์ !!
ex) ์ •๋ณด : submit์˜ ์ฃผ์ฒด๋Š”? ๋Œ€์ƒ์€? submit ๋œ ์‹œ๊ฐ„์€?

 

  • ๊ธฐ๋ณธ ๋ชจ์–‘
function onLoginSubmit(event) { 
	event.preventDefault(); 
    console.log(event); 
}

 

  • ๋ชจ๋“  ๊ฐœ๋…์„ ์ข…ํ•ฉํ•œ ์˜ˆ์‹œ ์ฝ”๋“œ
<!-- html ํŒŒ์ผ -->

<!-- ver 3 --> 
<form id="login-form"> 
    <input 
        required maxlength="15" 
        type="text" 
        placeholder="What is your name?"
    > 
    <input type="submit" value="Log in"> 
</form> 
<a href="https://nomadcoders.co">Go to courses</a>

 

// js ํŒŒ์ผ

// ๋งํฌ์™€ Form์˜ ๊ธฐ๋ณธ ๋™์ž‘์„ ๋ง‰๊ณ , ๊ทธ value๋ฅผ console.log()๋กœ ๊ด€์ฐฐํ•˜๋Š” ๋ฐฉ๋ฒ•. 
const loginForm = document.querySelector("#login-form"); 
const loginInput = document.querySelector("#login-form input"); 
const link = document.querySelector("a"); 

function handleClick(event) { 
event.preventDefault() console.dir(event); 
// alert("clicked!"); 
} 

function onLoginSubmit(event) { 
event.preventDefault(); 
console.log(loginInput.value); 
} 
link.addEventListener("click", handleClick); 
loginForm.addEventListener("submit",onLoginSubmit)
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€