[HTML] ๐ƒ form ํƒœ๊ทธ, ๊ฐ„๋‹จํ•œ ๊ฒƒ๋งŒ ํ•œ๋ˆˆ์— ๋ณด๊ธฐ๐Ÿ‘€

TATAยท2023๋…„ 1์›” 7์ผ
0

HTML

๋ชฉ๋ก ๋ณด๊ธฐ
2/6

โ–ท form ํƒœ๊ทธ

form ๊ด€๋ จ ์š”์†Œ๋“ค์€ ๋™์ ์ธ ์›น ํŽ˜์ด์ง€์ธ
๋กœ๊ทธ์ธ, ํšŒ์›๊ฐ€์ž… ๋“ฑ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๊ผญ ํ•„์š”ํ•œ ์š”์†Œ๋“ค์ด๋‹ค.
ํผ์•ˆ์— ์ž…๋ ฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„๋กœ ์ „๋‹ฌํ•ด์„œ ์ฒ˜๋ฆฌํ•˜๋„๋ก ๋งŒ๋“ค์–ด์ค€๋‹ค.

โœ๏ธ mini์ •๋ฆฌ
โ˜‘ formํƒœ๊ทธ๋Š” ์ž…๋ ฅ ์–‘์‹ ์ „์ฒด๋ฅผ ๊ฐ์‹ธ๋Š” ํƒœ๊ทธ์ด๋‹ค.
โ˜‘ form์€ ์ปจํŠธ๋กค ์š”์†Œ(control element)๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

โ—๏ธ์ฐธ๊ณ 1) form ํƒœ๊ทธ ์‚ฌ์ด์—๋Š” ๋‹ค๋ฅธ form ํƒœ๊ทธ๊ฐ€ ์‚ฝ์ž…์ด ์•ˆ๋œ๋‹ค.
โ—๏ธ์ฐธ๊ณ 2) form ํƒœ๊ทธ์˜ ์ด๋ฆ„ ์†์„ฑ์€ ํ•œ ํŽ˜์ด์ง€์—์„œ ์ค‘๋ณตํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ ๋œ๋‹ค.
โ—๏ธ์ฐธ๊ณ 3) CSS์—์„œ๋Š” form ํƒœ๊ทธ ํฐํŠธ๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋”ฐ๋กœ font๋ฅผ ์ ์šฉํ•ด์ค˜์•ผ ํ•œ๋‹ค.


๐ƒ form ํƒœ๊ทธ ์†์„ฑ

action : ํผ์„ ์ „์†กํ•  ์„œ๋ฒ„์˜ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ์ง€์ •ํ•œ๋‹ค.
method : ํผ์„ ์ „์†กํ•  ๋ฐฉ์‹์œผ๋กœ 'post' / 'get' ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.
ย  ย ย ย ย ย ย ย ย ย ย ย ย ย ย  post : ์ž…๋ ฅ ๋‚ด์šฉ์˜ ๊ธธ์ด์— ์ œํ•œ X, ์ž์ฃผ ์‚ฌ์šฉ
ย  ย ย ย ย ย ย ย ย ย ย ย ย ย ย  get : ์–‘์‹ ๋ฐ์ดํ„ฐ๋ฅผ action url๊ณผ ?๊ตฌ๋ถ„์ž ๋’ค์— ์ด์–ด ๋ถ™์—ฌ์„œ ์ œ๊ณตํ•œ๋‹ค.
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ๊ทธ๋ž˜์„œ ๋ณด์•ˆ์— ์ทจ์•ฝํ•˜๋‹ค. ์ฃผ๋กœ ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย (256~4096 byte๊นŒ์ง€๋งŒ ์ „์†ก ๊ฐ€๋Šฅ)
name : ํ•˜๋‚˜์˜ ์›น ๋ฌธ์„œ์•ˆ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํผ์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํผ์„ ์‹๋ณ„ํ•˜๊ธฐ์œ„ํ•ด ์ด๋ฆ„์„ ์ง€์ •ํ•œ๋‹ค.
autocomplete : ํผ ๋‚ด๋ถ€ ์š”์†Œ์˜ ์ž๋™ ์™„์„ฑ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ• ์ง€(on) ์•ˆํ• ์ง€(off) ๊ฒฐ์ •ํ•œ๋‹ค.
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย on์„ ๋ช…์‹œํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ด์ „์— ์ž…๋ ฅํ–ˆ๋˜ ๊ฐ’๋“ค์„ ๊ธฐ๋ฐ˜์œผ๋กœ
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’๊ณผ ๋น„์Šทํ•œ ๊ฐ’๋“ค์„ ๋“œ๋กญ๋‹ค์šด ์˜ต์…˜์œผ๋กœ ๋ณด์—ฌ์ค€๋‹ค.
target : ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ํ˜„์žฌ์˜ ์ฐฝ์ด ์•„๋‹Œ ๋‹ค๋ฅธ ์œ„์น˜์—์„œ ์—ด๋ฆฌ๋„๋ก ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
onsubmit : action ์†์„ฑ์„ ํ™œ์šฉํ•˜์ง€์•Š๊ณ , onsubmit ์ด๋ฒคํŠธ๋ฅผ ํ™œ์šฉํ•ด์„œ ์Šคํฌ๋ฆฝํŠธ๋กœ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

onsubmit ์˜ˆ์‹œ

<form action="#" onsubmit="return test()">
  <input type="submit" value="submit" />
</form>
<script>
  function test() {
    console.log("hi");
    return false;
  }
</script>

// onsubmit์— 'return test()'์˜ return์€ '์ฒ˜๋ฆฌ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค'๋ผ๋Š” ์˜๋ฏธ์ด๋‹ค.
// false๊ฐ€ ๋ฐ˜ํ™˜๋˜๋ฉด ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๋ฅผ ๊ทธ๋Œ€๋กœ ๊ฐ•์ œ ์ข…๋ฃŒ์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์—
// action์ด ์ฒ˜๋ฆฌ๋˜๋Š” ์ผ์€ ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค. 

๐ƒ label ํƒœ๊ทธ

ํ•ด๋‹น ํผ ์š”์†Œ์— ์–ด๋–ค ๊ฐ’์„ ๋„ฃ์–ด์•ผ ํ•˜๋Š”์ง€ ์ด๋ฆ„์„ ๋ถ™์ด๋Š” ์š”์†Œ์ด๋‹ค.

label์˜ for์˜ ๊ฐ’๊ณผ ์–‘์‹์˜ id์˜ ๊ฐ’์ด ๊ฐ™์œผ๋ฉด ์—ฐ๊ฒฐ๋œ๋‹ค.
์ž˜ ์—ฐ๊ฒฐ์ด ๋˜์—ˆ์„ ๋•Œ label์„ ํด๋ฆญํ•˜๋ฉด ํ•ด๋‹น ํผ ์ž…๋ ฅ ์š”์†Œ๋กœ ํฌ์ปค์Šค๊ฐ€ ๋œ๋‹ค.

<label for="itemId">์•„์ด๋”” ์ž…๋ ฅ</label>
<input type="text" id="itemId" />

๐ƒ fieldset, legend ํƒœ๊ทธ

fieldset์€ form์•ˆ์— ์—ฌ๋Ÿฌ ๊ตฌ์—ญ์„ ๋‚˜๋ˆ 
๊ด€๊ณ„๋œ ์š”์†Œ๋“ค๋ผ๋ฆฌ ๋ฌถ์–ด์ฃผ๋ฉฐ ๊ทธ๋ฃนํ™”ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

โž• ํ•ด๋‹น ๊ทธ๋ฃน์˜ ์ด๋ฆ„์„ ์ •ํ•  ์ˆ˜ ์žˆ๋Š” legend์™€ ํ•จ๊ป˜ ์“ฐ์ธ๋‹ค.

์ด๋ ‡๊ฒŒ ์ •๋ณด๋ฅผ ๋”ฐ๋กœ ๊ตฌ๋ณ„ํ•ด ๋‘๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜๊ธฐ ํŽธํ•˜๊ณ  ๊ฐ€๋…์„ฑ๋„ ์ข‹์•„์ง„๋‹ค.

<form>
  <fieldset>
    <legend> Login </legend>
    ID : <input type="text" />
    password : <input type="password" />
  </fieldset>
  
  <fieldset>
    <legend> Login 2 </legend>
    E-mail : <input type="e-mail" />
    password : <input type="password" />
  </fieldset>
</form>


โ–ท React์—์„œ์˜ Form

htmlFor : label์˜ for์„ htmlFor๋กœ ์จ์•ผ ํ•จ
required : ํ•„์ˆ˜๋กœ ์ž‘์„ฑ
autocomplete : ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํผ ํ•„๋“œ์˜ ์ž๋™์™„์„ฑ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ๋•Œ ์ œ์•ˆํ•  ๊ฐ’์„ ์ง€์ •ํ•˜๋Š” ์†์„ฑ

์˜ˆ์‹œ ์ฝ”๋“œ

<form onSubmit={onSubmit}>
  <label htmlFor='username'>Display name</label>
  <input type='text' id='username' name='username' autoComplete='username' required />

  <label htmlFor='email'>Email</label>
  <input type='email' id='email' name='email' autoComplete='email' required />

  <label htmlFor='pwd'>Password</label>
  <input type='password' id='pwd' name='pwd' autoComplete='current-password' required />

  <button type='submit'>
    <div className='submit-bg'>
      <span>Sign up</span>
    </div>
  </button>
</form>

fieldset ์˜ˆ์‹œ ์ฝ”๋“œ

<form>
  <fieldset>
    <legend>์‚ฌ์šฉ์ž ์ •๋ณด</legend>

    <label htmlFor="name">์ด๋ฆ„:</label>
    <input type="text" id="name" name="name"><br>

    <label for="email">์ด๋ฉ”์ผ:</label>
    <input type="email" id="email" name="email"><br>
  </fieldset>

  <fieldset>
    <legend>ํšŒ์› ๊ฐ€์ž… ์ •๋ณด</legend>

    <label htmlFor="username">์‚ฌ์šฉ์ž ์ด๋ฆ„:</label>
    <input type="text" id="username" name="username"><br>

    <label htmlFor="password">๋น„๋ฐ€๋ฒˆํ˜ธ:</label>
    <input type="password" id="password" name="password"><br>
  </fieldset>

  <button type="submit">๊ฐ€์ž…ํ•˜๊ธฐ</button>
</form>

input ์ž๋™์™„์„ฑ ์‹œ ๋ฐฐ๊ฒฝ์ƒ‰์ƒ ๋ณ€ํ•˜์ง€ ์•Š๊ฒŒ ๋งŒ๋“ค๊ธฐ

  input:-webkit-autofill,
  input:-webkit-autofill:focus {
    -webkit-text-fill-color: var(--white-100);
    box-shadow: 0 0 0px 1000px var(--dark-blue-500) inset;
    transition: background-color 5000s ease-in-out 0s;
  }

๐Ÿ‘‰ ํผ(form) ํƒœ๊ทธ ์™„๋ฒฝ ์ •๋ฆฌํ•œ ๋ธ”๋กœ๊ทธ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ

profile
๐Ÿพ

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