Mark Up/HTML

🏷️ 폼(Form) νƒœκ·Έ 양식 & μ’…λ₯˜ - ν•œλ°© 정리

인파_ 2021. 9. 27. 20:34

html-form

폼(Form) 양식

HTML 에선 λΈŒλΌμš°μ €μ˜ λ‚΄μž₯ μš”μ†Œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ›Ή 양식에 λŒ€ν•œ 지원을 μ œκ³΅ν•œλ‹€. 예λ₯Όλ“€μ–΄ μš°λ¦¬κ°€ νŠΉμ • μ‚¬μ΄νŠΈμ— 둜그인 ν• λ•Œ μ•„λž˜μ™€ 같이 계정 아이디와 λΉ„λ°€λ²ˆν˜Έλ₯Ό μž…λ ₯ν•˜λŠ” 화면을 μˆ˜λ„ 없이 많이 봀을 것이닀.

폼-νƒœκ·Έ-정리

이처럼 ν…μŠ€νŠΈ ν•„λ“œ, μ•”ν˜Έ ν•„λ“œ, ν™•μΈλž€, λΌλ””μ˜€ λ²„νŠΌ, 제좜 λ²„νŠΌ, 메뉴 λ“±κ³Ό 같은 μ»¨νŠΈλ‘€μ„ ν¬ν•¨ν•œ 양식 톡, μ„œλ²„λ‘œ λ‚˜μ˜ 아이디, λΉ„λ°€λ²ˆν˜Έλ₯Ό μž…λ ₯ν•΄μ„œ 보내 μ„œλ²„μ˜ λ°μ΄ν„°λ² μ΄μŠ€μ— λ‚΄ 정보가 있고, 이것이 μΌμΉ˜ν•˜λ©΄ 둜그인이 처리되게 λœλ‹€.

폼-νƒœκ·Έ-정리

κΌ­ νšŒμ›κ°€μž… / 둜그인 뿐만 μ•„λ‹ˆλΌ μ΄λ ‡κ²Œ 주문을 ν•˜κΈ° μœ„ν•΄ 배솑지 정보λ₯Ό κΈ°μž¬ν•˜κ³  μ œμΆœν•˜λŠ” 것도 λ§ˆμ°¬κ°€μ§€μ΄λ‹€.

넀이버 배솑 주문을 ν• λ•Œ κΈ°μž¬ν•˜λŠ” 배솑지 정보 μ—­μ‹œ form 이닀.

μ΄λ ‡κ²Œ μ›ΉνŽ˜μ΄μ§€μ—μ„œ λ‚΄ 정보λ₯Ό μ„œλ²„λ‘œ λ³΄λ‚΄κ±°λ‚˜ ν˜Ήμ€ μ„œλ²„λ‘œ 보내지 μ•Šλ”λΌλ„ 자체 μ›ΉνŽ˜μ΄μ§€μ—μ„œ μ‚¬μš©μžμ™€ μƒν˜Έμž‘μš©μ„ ν•˜κΈ° μœ„ν•΄ μž…λ ₯κ°’μ΄λ‚˜ λ²„νŠΌκ³Ό 같은 이벀트 μš”μ†Œκ°€ ν•„μš”ν• λ•Œ μ‚¬μš©λ˜λŠ” HTML의 νƒœκ·Έκ°€ λ°”λ‘œ <form> μ΄λ‹€.


HTML5 form μš”μ†Œ

HTML의 폼은 μ‚¬μš©μžμ™€ μ›Ήμ‚¬μ΄νŠΈ λ˜λŠ” μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ„œλ‘œ μƒν˜Έ μž‘μš©ν•˜λŠ” 것 쀑 μ€‘μš”ν•œ 기술 쀑에 ν•˜λ‚˜μ΄λ‹€. 폼은 μ‚¬μš©μžκ°€ μ›Ήμ‚¬μ΄νŠΈμ— 데이터λ₯Ό 전솑해주기도 ν•˜λ©° 이밖에 μ›ΉνŽ˜μ΄μ§€κ°€ μž…λ ₯ 데이터λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•˜μ—¬ μ‚¬μš©ν•  수 도 μžˆλ‹€.

HTML의 폼에 μ΄μš©λ˜λŠ” νƒœκ·ΈλŠ” λ‹€μŒκ³Ό 같이 λͺ‡κ°€μ§€ μžˆλ‹€. 폼 μš”μ†ŒλŠ” μžμ²΄μ μœΌλ‘œ μ–‘식을 μƒμ„±ν•˜λŠ” κ²ƒμ΄ μ•„λ‹ˆλΌ <input><label> λ“±κ³Ό 같은 ν•„μˆ˜ 양식 μš”μ†Œλ₯Ό ν¬ν•¨ν•˜λŠ” μ»¨ν…Œμ΄λ„ˆμ΄λ‹€. 이 νƒœκ·Έλ“€μ„ μ‘°ν•©ν•˜μ—¬ 둜그인 ν™”λ©΄ κ³Ό 같이 μž…λ ₯ 양식 화면을 κ΅¬μ„±ν•˜κ²Œ λ˜λŠ” 것이닀.

Tag Description
<form> μ‚¬μš© μΈ‘μ—μ„œ μž…λ ₯을 μž…λ ₯ν•˜λŠ” HTML 양식을 μ •μ˜
<input> μž…λ ₯ μ»¨νŠΈλ‘€μ„ μ •μ˜
<textarea> 닀쀑 라인 μž…λ ₯ μ»¨νŠΈλ‘€μ„ μ •μ˜
<label> μž…λ ₯ μš”μ†Œμ˜ λ ˆμ΄λΈ”μ„ μ •μ˜
<fieldset> κ΄€λ ¨ μš”μ†Œλ₯Ό μ–‘μ‹μœΌλ‘œ κ·Έλ£Ήν™”
<legend> <fieldset> μš”μ†Œμ— λŒ€ν•œ μΊ‘μ…˜μ„ μ •μ˜
<select> λ“œλ‘­λ‹€μš΄ λͺ©λ‘μ„ μ •μ˜
<optgroup> λ“œλ‘­λ‹€μš΄ λͺ©λ‘μ—μ„œ κ΄€λ ¨ μ˜΅μ…˜ 그룹을 μ •μ˜
<option> λ“œλ‘­λ‹€μš΄ λͺ©λ‘μ—μ„œ μ˜΅μ…˜μ„ μ •μ˜ν•©
<button> 클릭 κ°€λŠ₯ν•œ λ²„νŠΌμ„ μ •μ˜ν•©

<form> νƒœκ·Έ

  • μž…λ ₯ 양식 전체λ₯Ό κ°μ‹ΈλŠ” νƒœκ·Έ
  • form은 컨트둀 μš”μ†Œ(control element)둜 κ΅¬μ„±λœλ‹€.
Form νƒœκ·Έμ˜ 속성 μ„€λͺ…
method 전솑 방식 선택

- get : 256~4096 byteκΉŒμ§€λ§Œ 전솑 κ°€λŠ₯
- post : μž…λ ₯ λ‚΄μš©μ˜ 길이에 μ œν•œ X
name form의 이름
μ„œλ²„λ‘œ 제좜된 νΌ 데이터(form data)λ₯Ό μ°Έμ‘°ν•˜κΈ° μœ„ν•΄ μ‚¬μš©
action form을 전솑할 μ„œλ²„ μͺ½μ˜ script νŒŒμΌμ„ 지정
μ „μ†‘λ˜λŠ” μ„œλ²„ url λ˜λŠ” html 링크
target actionμ—μ„œ μ§€μ •ν•œ script νŒŒμΌμ„ ν˜„μž¬ 창이 μ•„λ‹Œ λ‹€λ₯Έ μœ„μΉ˜μ— 열도둝 지정
autocomplete μžλ™ μ™„μ„±.
on으둜 λͺ…μ‹œν•˜λ©΄, λΈŒλΌμš°μ €λŠ” μ‚¬μš©μžκ°€ 이전에 μž…λ ₯ν–ˆλ˜ 값듀을 기반으둜 μ‚¬μš©μžκ°€ μž…λ ₯ν•œ κ°’κ³Ό λΉ„μŠ·ν•œ 값듀을 λ“œλ‘­λ‹€μš΄ μ˜΅μ…˜μœΌλ‘œ 보여쀀닀.
enctype 폼 데이터(form data)κ°€ μ„œλ²„λ‘œ 제좜될 λ•Œ ν•΄λ‹Ή 데이터가 μΈμ½”λ”©λ˜λŠ” 방법을 λͺ…μ‹œ

- application/x-www-form-urlencoded κΈ°λ³Έκ°’μœΌλ‘œ, λͺ¨λ“  λ¬Έμžλ“€μ€ μ„œλ²„λ‘œ 보내기 전에 인코딩됨을 λͺ…μ‹œν•¨. 
- multipart/form-data λͺ¨λ“  문자λ₯Ό μΈμ½”λ”©ν•˜μ§€ μ•ŠμŒμ„ λͺ…μ‹œν•¨. 이 방식은 <form> μš”μ†Œκ°€ νŒŒμΌμ΄λ‚˜ 이미지λ₯Ό μ„œλ²„λ‘œ 전솑할 λ•Œ 주둜 μ‚¬μš©ν•¨. 
- text/plain 곡백 문자(space)λŠ” "+" 기호둜 λ³€ν™˜ν•˜μ§€λ§Œ, λ‚˜λ¨Έμ§€ λ¬ΈμžλŠ” λͺ¨λ‘ μΈμ½”λ”©λ˜μ§€ μ•ŠμŒμ„ λͺ…μ‹œν•¨.
novalidate 폼 데이터(form data)λ₯Ό μ„œλ²„λ‘œ μ œμΆœν•  λ•Œ ν•΄λ‹Ή λ°μ΄ν„°μ˜ μœ νš¨μ„±μ„ κ²€μ‚¬ν•˜μ§€ μ•ŠμŒμ„ λͺ…μ‹œ
<!-- /action_page.php 둜 get λ°©μ‹μœΌλ‘œ νƒœκ·Έ λ‚΄μ˜ μž…λ ₯값듀을 제좜 -->
<form name="profile" action="/action_page.php" method="get" autocomplete="on">
  <input type="text" name="id"> <!-- μž…λ ₯λž€ -->
  <select> <!-- λ“œλ‘­λ‹€μš΄ 메뉴 -->
    <option value="blue">red</option>
    <option value="blue">blue</option>
    <option value="blue">green</option>
  </select>
  <input type="submit" value="Submit"> <!-- μ„œλ²„ 제좜 λ²„νŠΌ -->
</form>

See the Pen form νƒœκ·Έ 1 by barzz12 (@inpaSkyrim) on CodePen.

제좜(submit) λ²„νŠΌμ„ ν΄λ¦­ν•˜λ©΄ input νƒœκ·Έμ— μž…λ ₯된 κ°’κ³Ό select, option νƒœκ·Έμ˜ μ„ νƒλœ 메뉴값이 form νƒœκ·Έμ˜ method 속성에 μ§€μ •λœ 방식(get)으둜 action 속성에 μ§€μ •λœ μ„œλ²„μΈ‘μ˜ 처리 둜직(/action_page.php)에 μ „λ‹¬λ˜κ²Œ λœλ‹€. 그러면 μ„œλ²„μ—μ„  name μ†μ„±μœΌλ‘œ μ§€μ •λœ μ΄λ¦„μœΌλ‘œ λ³€μˆ˜κ°’μ„ λ°›μ•„ 데이터λ₯Ό μ–»μ–΄ 처리λ₯Ό ν•˜λŠ” 것이닀. (μœ„μ˜ μ˜ˆμ œλŠ” μ„œλ²„ 섀정이 μ—†μœΌλ‹ˆ μ‹€μ œλ‘œ μ œμΆœλ˜μ§€λŠ” μ•ŠλŠ”λ‹€)

이처럼 <form> νƒœκ·ΈλŠ” μ‚¬μš©μžμ˜ μƒν˜Έμž‘μš©ν•  μž…λ ₯λž€μ΄λ‚˜ 메뉴, λ²„νŠΌ νƒœκ·Έλ“€μ„ μ •μ˜ν•˜κ³  이λ₯Ό λ¬Άκ³  어디에 μ–΄λ–»κ²Œ μ–Έμ œ μ œμΆœν• μ§€ νƒœκ·Έ μ†μ„±μœΌλ‘œ μ§€μ •ν•˜λŠ” κ²ƒμœΌλ‘œ 보면 λœλ‹€.

form μš”μ†Œλ₯Ό μ‚¬μš©ν•  λ•Œ μ£Όμ˜ν•  μ‚¬ν•­μœΌλ‘œλŠ” <form></form> νƒœκ·Έ μ‚¬μ΄μ—λŠ” λ‹€λ₯Έ <form> νƒœκ·Έκ°€ μ‚½μž…μ΄ μ•ˆλ˜λ©°, <form>의 이름 속성은 ν•œ νŽ˜μ΄μ§€μ—μ„œ μ€‘λ³΅ν•˜μ—¬ μ‚¬μš©ν•˜λ©΄ μ•ˆ λœλ‹€.

<input> νƒœκ·Έ

  • μ‚¬μš©μžκ°€ 정보λ₯Ό μž…λ ₯ν•˜λŠ” 뢀뢄을 λ§Œλ“€μ–΄μ•Ό ν•  λ•Œ μ‚¬μš©
  • type에 따라 μ–΄λ–€ ν˜•μ‹μœΌλ‘œ 폼 양식을 정할지 κ²°μ •ν•œλ‹€ (λ²„νŠΌ / 이메일 μž…λ ₯ / λΉ„λ°€λ²ˆν˜Έ μž…λ ₯ ..λ“±)
  • μ•„λž˜ ν‘œμ—μ„œ λΉ¨κ°„μƒ‰μœΌλ‘œ 친 속성이 주둜 쓰인닀고 보면 λœλ‹€
input 속성 μ„€λͺ…
readonly 읽기 μ „μš© ν•„λ“œλ‘œ λ§Œλ“€κΈ°
placeholder 힌트 ν‘œμ‹œ(ν•„λ“œ ν΄λ¦­μ‹œ λ‚΄μš© 사라짐)
autofocus νŽ˜μ΄μ§€λ₯Ό 뢈러였자 마자 νŠΉμ • 뢀뢄에 마우슀 μ»€μ„œκ°€ ν‘œμ‹œλ˜λ„λ‘ ν•˜λŠ” 것
autocomplete μžλ™μ™„μ„± μ„€μ •
max / min <input> ν•„λ“œμ˜ μ΅œλŒ€κ°’κ³Ό μ΅œμ†Œκ°’ 지정
maxLength ν…μŠ€νŠΈ ν•„λ“œμ— μ΅œλŒ€λ‘œ μž…λ ₯ν•  수 μžˆλŠ” 문자의 개수 지정
step 숫자의 간격 μ„€μ •
<input> 이 date, datetime, datetime-local, month, week,time, number, range일 경우만 μ‚¬μš©κ°€λŠ₯
required ν•„μˆ˜ μž…λ ₯ ν•„λ“œ 지정(빈칸이면 μ•ˆ λ„˜μ–΄κ°)
type ⭐ input νƒœκ·Έμ˜ νƒ€μž…μ„ 지정
λ‹¨μˆœνžˆ ν…μŠ€νŠΈμž…λ ₯창인지 이메일, μ „ν™”λ²ˆν˜Έ 양식 ν˜Ήμ€ νŒŒμΌμ²¨λΆ€, λ™μ˜μƒ 첨뢀 인지
<form>
  First name :<br>
  <input type="text" name="firstname" maxLength="3" required><br> <!-- ν•„μˆ˜μž…λ ₯ + 3자 μ œν•œ -->
  Last name :<br>
  <input type="text" name="lastname"><br>
  별λͺ… :<br>
  <input type="text" name="alias" placeholder="μ—†μ„μ‹œ μƒλž΅"> <!-- 힌트 ν‘œμ‹œ -->
</form>

See the Pen form νƒœκ·Έ 2 by barzz12 (@inpaSkyrim) on CodePen.

 

input의 type 속성 μ’…λ₯˜

HTML <input> μš”μ†Œ 쀑에 κ°€μž₯ μ€‘μš”ν•œ 속성을 type 속성이닀. 이 type이 μ–΄λ–€ 것이냐에 따라 κ·Έλƒ₯ λ²„νŠΌμ΄ λ μˆ˜λ„ 있고 μž…λ ₯ ν…μŠ€νŠΈλž€μ΄ λ μˆ˜λ„ 있고 λΌλ””μ˜€ λ²„νŠΌμ΄ λ μˆ˜λ„ 있기 λ•Œλ¬Έμ΄λ‹€. 그리고 같은 μž…λ ₯λž€μ΄λΌλ„ 이메일 μž…λ ₯인지 μ „ν™”λ²ˆν˜Έ μž…λ ₯인지 λΉ„λ°€λ²ˆν˜Έ μž…λ ₯인지 λͺ¨λ‘ κ΅¬λΆ„ν•˜μ—¬, μž…λ ₯이 잘λͺ»λ  경우 μ•ˆλ‚΄ 메세지λ₯Ό λ„μš°λŠ”, μ‚¬μš©μžμ™€ μƒν˜Έμž‘μš© μš”μ†Œλ₯Ό 보닀 λ›°μ–΄λ‚˜κ²Œ 해쀄 수 도 μžˆλ‹€.

input의 type 속성 μ’…λ₯˜

input type 속성 μ„€λͺ…
hidden μ„œλ²„λ‘œ λ³΄λ‚΄λŠ” 값듀을 λ³΄λ‚΄λŠ” ν•„λ“œ(μ‚¬μš©μžμ—κ²ŒλŠ” 보이지 X)
text ν•œ μ€„μ§œλ¦¬ ν…μŠ€νŠΈλ₯Ό μž…λ ₯ν•  수 μžˆλŠ” ν…μŠ€νŠΈ μƒμž

<input type="text" value="write email or phone number" size="10" maxlength="5" />
search κ²€μƒ‰μƒμž
(ν¬λ‘¬μ΄λ‚˜ μ‚¬νŒŒλ¦¬μ—μ„œλ§Œ μ‚¬μš© κ°€λŠ₯ν•˜λ©° ν¬λ‘œμŠ€λΈŒλΌμš°μ§•μ΄ μ•ˆλ˜κΈ°μ— 잘 μ‚¬μš©ν•˜μ§€λŠ” μ•ŠλŠ”λ‹€.)
tel μ „ν™”λ²ˆν˜Έ μž…λ ₯ ν•„λ“œ

<input type="tel" />
url URL μ£Όμ†Œλ₯Ό μž…λ ₯ ν•„λ“œ

<input type="url" />
email λ©”μΌμ£Όμ†Œ μž…λ ₯ ν•„λ“œ
'@' κ°€ λ“€μ–΄κ°„ 이메일 ν˜•μ‹μΈμ§€ 검사해쀀닀.

<input type="email" id="useremail" name="useremail" />
password λΉ„λ°€λ²ˆν˜Έ μž…λ ₯ ν•„λ“œ

<input name="password" required type="password" placeholder="Password" />
number 숫자λ₯Ό μ‘°μ ˆν•  수 μžˆλŠ” ν™”μ‚΄ν‘œ
range 숫자 λ²”μœ„λ₯Ό μ‘°μ ˆν•  수 μžˆλŠ” μŠ¬λΌμ΄λ“œ λ§‰λŒ€
min κ³Ό max둜 λ²”μœ„λ₯Ό μ§€μ •ν•˜κ³  step 으둜 증가 값을 μ„ΈνŒ…ν•  수 μžˆλ‹€.
참고둜 κΈ°λ³Έ μ„ΈνŒ…μ€ νŒŒλž€μƒ‰μœΌλ‘œ λ˜μ–΄μžˆλŠ”λ°, CSS둜 μ»€μŠ€ν„°λ§ˆμ΄μ§•μ„ ν•  수 μžˆλ‹€. λ‹€λ§Œ 각 λΈŒλΌμš°μ €λ§ˆλ‹€ κ°€λŠ₯ν•œ 정도가 λ‹€λ₯΄λ‹ˆ 확인할 ν•„μš”κ°€ μžˆλ‹€.

<input type="range" id="volume" name="volume" min="0" max="11" />
color μƒ‰μƒν‘œ
checkbox μ²΄ν¬λ°•μŠ€ (2κ°œμ΄μƒ 선택 κ°€λŠ₯)

<input type="checkbox" id="cookie" name="cookie" checked>
<label for="cookie">Cookie</label>
radio λΌλ””μ˜€ λ²„νŠΌ (1개만 선택 κ°€λŠ₯)

<input type="radio" id="apple" name="drone" value="apple" checked>
<label for="huey">Apple</label>
datetime ꡭ제 ν‘œμ€€μ‹œ(UTC)둜 μ„€μ •λœ λ‚ μ§œμ™€ μ‹œκ°„(μ—°, μ›”, 일, μ‹œ, λΆ„, 초, λΆ„ν•  초)
datetime-local μ‚¬μš©μžκ°€ μžˆλŠ” 지역을 κΈ°μ€€μœΌλ‘œ ν•œ λ‚ μ§œμ™€ μ‹œκ°„(μ—°, μ›”, 일, μ‹œ, λΆ„, 초, λΆ„ν•  초)
date μ‚¬μš©μž 지역을 κΈ°μ€€μœΌλ‘œ ν•œ λ‚ μ§œ(μ—°, μ›”, 일)

<input type="date" id="start" name="trip-start" value="2018-07-22" min="2018-01-01" max="2018-12-31">
month μ‚¬μš©μž 지역을 κΈ°μ€€μœΌλ‘œ ν•œ λ‚ μ§œ(μ—°, μ›”)
week μ‚¬μš©μž 지역을 κΈ°μ€€μœΌλ‘œ ν•œ λ‚ μ§œ(μ—°, μ£Ό)
time μ‚¬μš©μž 지역을 κΈ°μ€€μœΌλ‘œ ν•œ μ‹œκ°„(μ‹œ, λΆ„, 초, λΆ„ν•  초)
button λ²„νŠΌμ„ λ§Œλ“€μ–΄ ν΄λ¦­ν–ˆμ„ λ•Œ 이벀트λ₯Ό λ°œμƒμ‹œν‚¬ 수 μžˆλ‹€. Submitκ³ΌλŠ” 차이가 μžˆλ‹€. JavaScriptλ₯Ό μ‚¬μš©ν•΄ 효과λ₯Ό λ§Œλ“€λ©΄ λœλ‹€.

<input type="button" value="μƒˆ μ°½ μ—΄κΈ°" onclick="window.open()" />
file νŒŒμΌμ„ 첨뢀할 수 μžˆλŠ” λ²„νŠΌ
(acceptλ₯Ό μ‚¬μš©ν•΄ 제좜 κ°€λŠ₯ν•œ 파일 양식을 지정할 μˆ˜λ„ μžˆλ‹€.)

<input type="file" accept=".doc,.docx" />
submit μ„œλ²„μ „μ†‘ λ²„νŠΌ

<input type="submit" value="Log In" />
image submit λ²„νŠΌ λŒ€μ‹  μ‚¬μš©ν•  이미지
reset 리셋 λ²„νŠΌ
μ‚¬μš©μžκ°€ μž…λ ₯ν•œ λͺ¨λ“  정보λ₯Ό μ§€μšΈ 수 μžˆλ‹€. ν•΄λ‹Ή Form에 μž…λ ₯ν–ˆλ˜ λ‚΄μš©λ“€μ„ μ²˜μŒλΆ€ν„° μž…λ ₯ν•˜κ³  싢을 λ•Œ ν™œμš©ν•¨.

<input type="reset" />
<h3>button</h3>
<input type="button" value="Click me" onclick="alert('Hello world!')">
<hr>

<h3>checkbox</h3>
<input type="checkbox" name="fruit1" value="apple" checked> 사과<br>
<input type="checkbox" name="fruit2" value="grape"> 포도<br>
<input type="checkbox" name="fruit3" value="peach"> λ³΅μˆ­μ•„<br>
<hr>

<h3>color</h3>
<input type="color" name="mycolor">
<hr>

<h3>date</h3>
<input type="date" name="birthday">
<hr>

<h3>datetime</h3>
<input type="datetime" name="birthdaytime">
<hr>

<h3>datetime-local</h3>
<input type="datetime-local" name="birthdaytime">
<hr>

<h3>email</h3>
<input type="email" name="useremail">
<hr>

<h3>file</h3>
<input type="file" name="myfile">
<hr>

<h3>hidden</h3>
<input type="hidden" name="country" value="Norway">
hidden filedλŠ” μ‚¬μš©μžμ— ν‘œμ‹œλ˜μ§€ μ•ŠλŠ”λ‹€.
<hr>

<h3>image</h3>
<input type="image" src="img/img_submit.gif" alt="Submit" width="48" height="48">
<hr>

<h3>month</h3>
<input type="month" name="birthdaymonth">
<hr>

<h3>number</h3>
<input type="number" name="quantity" min="2" max="10" step="2" value="2">
<hr>

<h3>password</h3>
<input type="password" name="pwd">
<hr>

<h3>radio</h3>
<input type="radio" name="gender" value="male" checked> λ‚¨μž<br>
<input type="radio" name="gender" value="female"> μ—¬μž<br>
<hr>

<h3>range</h3>
<input type="range" name="points" min="0" max="10" step="1" value="5">
<hr>

<h3>reset</h3>
<input type="reset">
<hr>

<h3>search</h3>
<input type="search" name="googlesearch">
<hr>

<h3>submit</h3>
<input type="submit" value="Submit">
<hr>

<h3>tel</h3>
<input type="tel" name="mytel">
<hr>

<h3>text</h3>
<input type="text" name="myname">
<hr>

<h3>time</h3>
<input type="time" name="mytime">
<hr>

<h3>url</h3>
<input type="url" name="myurl">
<hr>

<h3>week</h3>
<input type="week" name="week_year">

See the Pen formλͺ¨μŒ by barzz12 (@inpaSkyrim) on CodePen.


<textarea> νƒœκ·Έ

  • textarea μš”μ†ŒλŠ” input μš”μ†Œμ˜ "text" νƒ€μž…κ³Ό λΉ„μŠ·ν•œ ν˜•νƒœμ΄λ‹€. ν•˜μ§€λ§Œ "text" νƒ€μž…μ˜ input μš”μ†ŒλŠ” ν•œ μ€„λ§Œ μž…λ ₯이 κ°€λŠ₯ν•˜μ§€λ§Œ, <textarea> νƒœκ·ΈλŠ” μ—¬λŸ¬ μ€„μ˜ κΈ΄ λ‚΄μš©μ„ μž…λ ₯ν•˜λŠ” 것이 κ°€λŠ₯ν•˜λ‹€.
  • ν…μŠ€νŠΈ 창의 λ„ˆλΉ„μ™€ λ†’μ΄λŠ” HTMLμ—μ„œλŠ” cols, rows μ†μ„±μœΌλ‘œ, CSSμ—μ„œλŠ” width와 height κ°’μœΌλ‘œ 지정할 μˆ˜λ„ μžˆλ‹€.
  • form νƒœκ·Έμ™€ ν•¨κ»˜ μ‚¬μš©ν•΄ 감상평, μžκΈ°μ†Œκ°œμ„œ 제좜 λ“±μ˜ μš©λ„λ‘œ μ‚¬μš©ν•  수 μžˆλ‹€.
textarea 속성 μ„€λͺ…
autofocus νŽ˜μ΄μ§€κ°€ λ‘œλ“œλ  λ•Œ μžλ™μœΌλ‘œ ν¬μ»€μŠ€κ°€ <textarea> μš”μ†Œλ‘œ 이동됨을 λͺ…μ‹œν•¨.
cols ν…μŠ€νŠΈ μž…λ ₯ μ˜μ—­ 쀑 λ³΄μ΄λŠ” μ˜μ—­μ˜ λ„ˆλΉ„λ₯Ό λͺ…μ‹œν•¨.
dirname 폼 데이터(form data)κ°€ μ„œλ²„λ‘œ 제좜될 λ•Œ μ„œλ²„λ‘œ 보낼 ν…μŠ€νŠΈ μž…λ ₯ μ˜μ—­μ˜ ν…μŠ€νŠΈ λ°©ν–₯μ„±(text directionality)을 μ €μž₯ν•  이름을 λͺ…μ‹œν•¨. (μ–Έμ œλ‚˜ 이름 뒀에 “.dir”λ₯Ό 좔가함)
disabled ν•΄λ‹Ή <textarea> μš”μ†Œκ°€ λΉ„ν™œμ„±ν™”λ¨μ„ λͺ…μ‹œν•¨.
form ν•΄λ‹Ή <textarea> μš”μ†Œκ°€ 포함될 ν•˜λ‚˜ μ΄μƒμ˜ <form> μš”μ†Œλ₯Ό λͺ…μ‹œν•¨.
maxlength <textarea> μš”μ†Œμ—μ„œ ν—ˆμš©λ˜λŠ” μ΅œλŒ€ 문자수λ₯Ό λͺ…μ‹œν•¨.
name <textarea> μš”μ†Œμ˜ 이름을 λͺ…μ‹œν•¨.
placeholder <textarea> μš”μ†Œμ— μž…λ ₯될 값에 λŒ€ν•œ 짧은 힌트λ₯Ό λͺ…μ‹œν•¨.
readonly <textarea> μš”μ†Œμ˜ ν…μŠ€νŠΈ μž…λ ₯ μ˜μ—­μ΄ 읽기 μ „μš©μž„μ„ λͺ…μ‹œν•¨.
required 폼 데이터(form data)κ°€ μ„œλ²„λ‘œ 제좜되기 μ „ ν…μŠ€νŠΈ μž…λ ₯ μ˜μ—­μ΄ λ°˜λ“œμ‹œ μ±„μ›Œμ Έ μžˆμ–΄μ•Ό 함을 λͺ…μ‹œν•¨.
rows ν…μŠ€νŠΈ μž…λ ₯ μ˜μ—­ 쀑 λ³΄μ΄λŠ” μ˜μ—­μ˜ 라인수λ₯Ό λͺ…μ‹œν•¨.
wrap 폼 데이터(form data)κ°€ μ„œλ²„λ‘œ 제좜될 λ•Œ μž…λ ₯된 ν…μŠ€νŠΈμ˜ μ€„λ°”κΏˆ(wrap) 방식을 λͺ…μ‹œν•¨.
<form action="/examples/media/action_target.php" method="get">
    <textarea name="opinion" cols="30" rows="5" placeholder="여기에 μ¨μ£Όμ„Έμš”~">
    </textarea>
    <br>
    <input type="submit">
</form>

See the Pen form νƒœκ·Έ 3 by barzz12 (@inpaSkyrim) on CodePen.


<label> νƒœκ·Έ

  • λ ˆμ΄λΈ”(label) κ·Έ μžμ²΄λ‘œλŠ” νš¨κ³Όκ°€ μ—†μ§€λ§Œ, input νƒœκ·Έλ₯Ό μ œμ–΄ν•˜μ—¬ μƒνƒœκ°’μ„ λ³€κ²½ ν•˜λ„λ‘ λ•λŠ” 역할을 ν•œλ‹€
  • λ ˆμ΄λΈ” νƒœκ·Έλ₯Ό ν΄λ¦­ν•˜λ©΄ ν…μŠ€νŠΈ μ»¨νŠΈλ‘€μ— 초점이 맞좰져 μ‚¬μš©μ„±μ΄ 높아진닀. 특히 λͺ¨λ°”μΌμ΄λ‚˜ νƒœλΈ”λ¦Ώ ν™˜κ²½μ—μ„œ 강점을 λ°œν•œλ‹€.

&lt;label&gt; νƒœκ·Έ

<form name="selectFruit">
  <!-- μ²΄ν¬λ°•μŠ€λ₯Ό λˆŒλŸ¬μ•Ό 체크가 λœλ‹€ -->
  <input type="checkbox" /> λ°”λ‚˜λ‚˜
  <br>
  <!-- λ ˆμ΄λΈ”μ΄ μžˆλ‹€λ©΄ ν…μŠ€νŠΈ μ˜μ—­μ„ 클릭해도 체크가 λœλ‹€ -->
  <label>
    <input type="checkbox" /> λ°”λ‚˜λ‚˜
  </label>
</form>

See the Pen form νƒœκ·Έ 5 by barzz12 (@inpaSkyrim) on CodePen.

 

λ ˆμ΄λΈ” 뢄리

만일 μŠ€νƒ€μΌλ‘œ 인해 μœ„μ™€ 같이 <label> μ•ˆμ— <input> νƒœκ·Έκ°€ μœ„μΉ˜ν•˜λŠ” ν˜•μ‹μ„ μ·¨ν• μˆ˜ μ—†κ³  λ”°λ‘œ 뢄리해야 ν•œλ‹€λ©΄, <label> νƒœκ·Έμ˜ for 속성을 톡해 <input> νƒœκ·Έμ™€ 맀핑 μ‹œν‚¬ 수 μžˆλ‹€.

μ•„λž˜ μ½”λ“œλŠ” ​label νƒœκ·Έμ•ˆμ˜ μ˜μ—­μ„ 클릭할 경우 for 속성이 μ§€μ •λœ fruititem μ΄λΌλŠ” id 값을 찾게 λœλ‹€. 즉 μ•„λž˜μ˜ input νƒœκ·Έκ°€ μ›κ²©μœΌλ‘œ, μžλ™μœΌλ‘œ ν΄λ¦­ν•œ 것과 같이 λ™μž‘ν•˜κ²Œ λœλ‹€.

<!-- for 속성을 톡해 νƒœκ·Έλ₯Ό 뢄리할 μˆ˜λ„ μžˆλ‹€ -->
<input id="fruitItem" type="checkbox" /> 
<label for="fruitItem">λ°”λ‚˜λ‚˜</label>

<select> & <option> νƒœκ·Έ

  • λ“œλ‘­ λ©”λ‰΄μ—μ„œ 선택을 ν•  수 μžˆλŠ” 양식을 생성
  • <select> μš”μ†Œ λ‚΄λΆ€μ˜ <option> μš”μ†ŒλŠ” λ“œλ‘­λ‹€μš΄ λ¦¬μŠ€νŠΈ(drop-down list)μ—μ„œ μ‚¬μš©λ˜λŠ” κ°κ°μ˜ μ˜΅μ…˜μ„ μ •μ˜
속성λͺ… μ„€λͺ…
autofocus νŽ˜μ΄μ§€κ°€ λ‘œλ“œλ  λ•Œ μžλ™μœΌλ‘œ 포컀슀(focus)κ°€ λ“œλ‘­λ‹€μš΄ 리슀트둜 이동됨을 λͺ…μ‹œν•¨.
disabled ν•΄λ‹Ή λ“œλ‘­λ‹€μš΄ λ¦¬μŠ€νŠΈκ°€ λΉ„ν™œμ„±ν™”λ¨μ„ λͺ…μ‹œν•¨.
form ν•΄λ‹Ή λ“œλ‘­λ‹€μš΄ λ¦¬μŠ€νŠΈκ°€ 포함될 ν•˜λ‚˜ μ΄μƒμ˜ <form> μš”μ†Œλ₯Ό λͺ…μ‹œν•¨.
multiple μ‚¬μš©μžκ°€ ν•œ λ²ˆμ— 두 개 μ΄μƒμ˜ μ˜΅μ…˜μ„ 선택할 수 μžˆμŒμ„ λͺ…μ‹œν•¨.
name λ“œλ‘­λ‹€μš΄ 리슀트의 이름을 λͺ…μ‹œν•¨.
required 폼 데이터(form data)κ°€ μ„œλ²„λ‘œ 제좜되기 μ „ μ‚¬μš©μžκ°€ λ°˜λ“œμ‹œ λ“œλ‘­λ‹€μš΄ 리슀트의 값을 선택해야 함을 λͺ…μ‹œν•¨.
size λ“œλ‘­λ‹€μš΄ λ¦¬μŠ€νŠΈμ—μ„œ ν•œ λ²ˆμ— 보일 μ˜΅μ…˜μ˜ 개수λ₯Ό λͺ…μ‹œν•¨.
<label for="pet-select">Choose a pet:</label>
<br />
<select name="pets" id="pet-select">
      <option value="">--Please choose an option--</option>
      <option value="dog">Dog</option>
      <option value="cat">Cat</option>
      <option value="hamster">Hamster</option>
      <option value="parrot">Parrot</option>
      <option value="spider">Spider</option>
      <option value="goldfish">Goldfish</option>
</select>

See the Pen form μ½€λ³΄λ°•μŠ€ 1 by barzz12 (@inpaSkyrim) on CodePen.

<option> νƒœκ·Έμ—μ„œ μ‚¬μš©ν•˜λŠ” value 속성은 ν…μŠ€νŠΈ ν•„λ“œμ—μ„œμ˜ value μ†μ„±κ³ΌλŠ” 쑰금 틀리닀. ν…μŠ€νŠΈ ν•„λ“œμ—μ„œ value 속성에 값을 μž…λ ₯ν•˜λ©΄ 기본값이 μž…λ ₯λ˜μ§€λ§Œ <option> νƒœκ·Έμ˜ κ²½μš°λŠ” 이 λͺ©λ‘μ΄ μ„ νƒλœ 경우 μ „μ†‘λ˜λŠ” 값을 μ§€μ •ν•˜λŠ” 것이닀.

 

μ½€λ³΄λ°•μŠ€ κΈ°λ³Έκ°’ 지정

<label for="pet-select">Choose a pet:</label><br />
<select name="pets" id="pet-select">
      <option value="">--Please choose an option--</option>
      <option value="dog">Dog</option>
      <option value="cat">Cat</option>
      <option value="hamster" selected>Hamster</option> <!-- 기본값을 ν–„μŠ€ν„°λ‘œ μžλ™ μ„€μ • -->
      <option value="parrot">Parrot</option>
      <option value="spider">Spider</option>
      <option value="goldfish">Goldfish</option>
</select>

See the Pen form μ½€λ³΄λ°•μŠ€ 2 by barzz12 (@inpaSkyrim) on CodePen.

 

νŠΉμ • ν•­λͺ© 선택 κΈˆμ§€

<label for="pet-select">Choose a pet:</label><br />
<select name="pets" id="pet-select">
      <option value="">--Please choose an option--</option>
      <option value="dog">Dog</option>
      <option value="cat">Cat</option>
      <option value="hamster">Hamster</option>
      <option value="parrot">Parrot</option>
      <option value="spider" disabled>Spider</option> <!-- κ±°λ―ΈλŠ” 선택이 μ•ˆλ˜λ„λ‘ 처리 -->
      <option value="goldfish">Goldfish</option>
</select>

See the Pen form μ½€λ³΄λ°•μŠ€ 3 by barzz12 (@inpaSkyrim) on CodePen.

만일 μ™„μ „νžˆ λͺ©λ‘μ—μ„œ μ—†μ• κ³  싢은데 νƒœκ·ΈλŠ” 남겨두고 μ‹Άλ‹€λ©΄ hidden 속성을 써주면 λœλ‹€.

 

μ½€λ³΄λ°•μŠ€ 닀쀑 선택

  • <select> νƒœκ·Έμ— size 속성을 지정해 μ£Όλ©΄ λ“œλ‘­λ‹€μš΄ ν˜•νƒœκ°€ μ•„λ‹Œ, 선택 λͺ©λ‘μ΄ μ§€μ •λœ 크기만큼 λ³΄μ—¬μ§€κ²Œ λœλ‹€.
    만일 ν•­λͺ©μ˜ κ°―μˆ˜λ³΄λ‹€ sizeκ°€ μž‘μœΌλ©΄ μžλ™μœΌλ‘œ 슀크둀이 μƒμ„±λœλ‹€.
  • <select> νƒœκ·Έμ— multiple 속성을 지정해 μ£Όλ©΄ 'shift' λ˜λŠ” 'ctrl' ν‚€λ₯Ό λˆ„λ₯΄κ³  ν•­λͺ©μ„ μ„ νƒν•˜λ©΄ μ€‘λ³΅μœΌλ‘œ ν•­λͺ© 선택이 κ°€λŠ₯ν•˜κ²Œ λœλ‹€.
<label for="pet-select">Choose a pet:</label><br />
<!-- λͺ©λ‘ μ‚¬μ΄μ¦ˆκ°€ 4쀄 + shift둜 닀쀑 선택 -->
<select name="pets" id="pet-select" size=4 multiple> 
      <option value="dog">Dog</option>
      <option value="cat">Cat</option>
      <option value="hamster">Hamster</option>
      <option value="parrot">Parrot</option>
      <option value="spider">Spider</option>
      <option value="goldfish">Goldfish</option>
</select>

See the Pen form μ½€λ³΄λ°•μŠ€ 4 by barzz12 (@inpaSkyrim) on CodePen.

 

μ½€λ³΄λ°•μŠ€ κ·Έλ£Ή 지정

  • <optgroup> νƒœκ·Έλ₯Ό μ‚¬μš©ν•˜λ©΄ λͺ©λ‘μ„ κ·Έλ£Ήν™” ν•˜μ—¬ μΉ΄ν…Œκ³ λ¦¬λ₯Ό κ΅¬λΆ„ν•˜μ—¬ 보여쀀닀.
  • <optgroup>의 label μ†μ„±μ—λŠ” μΉ΄ν…Œκ³ λ¦¬λ₯Ό ꡬ뢄할 λ•Œ 보여쀄 textλ₯Ό λ„£μ–΄μ€€λ‹€.
<label for="pet-select">Choose a pet:</label><br />
<select name="pets" id="pet-select">
  <option value="">--Please choose an option--</option>
  
  <optgroup label="포유λ₯˜"> <!-- 선택λͺ©λ‘ κ·Έλ£Ή -->
    <option value="dog">Dog</option>
    <option value="cat">Cat</option>
    <option value="hamster">Hamster</option>
  </optgroup>
  
  <optgroup label="μ‘°λ₯˜">
    <option value="parrot">Parrot</option>
  </optgroup>
  
  <optgroup label="λ¬Όκ³ κΈ°">
    <option value="goldfish">Goldfish</option>
    <option value="spider">Shark</option>
  </optgroup>
</select>

See the Pen form μ½€λ³΄λ°•μŠ€ 5 by barzz12 (@inpaSkyrim) on CodePen.


<datalist> νƒœκ·Έ

  • μœ„μ˜ <select> νƒœκ·ΈλŠ” μ˜€λ‘œμ§€ μ„ νƒλ§Œ ν•  수 μžˆλŠ” 반면, <datalist>λŠ” λ¦¬μŠ€νŠΈμ—μ„œ μ–΄λŠ ν•œκ°€μ§€λ₯Ό μ„ νƒν•˜κ±°λ‚˜ ν‚€μ›Œλ“œμ— μž…λ ₯ν•  수 μžˆλ‹€λŠ” 차이점이 μžˆλ‹€
<!-- <input>의 list 속성값과 <datalist>의 idλͺ…을 λ˜‘κ°™μ΄ λ§žμΆ°μ£Όμ–΄μ•Ό λ™μž‘λœλ‹€. -->
<label for="movie">What is your favourite Browser?</label>
<input type="text" list="browsers"/>

<datalist id="browsers">
  <option value="Internet Explorer">
  <option value="Firefox">
  <option value="Chrome">
  <option value="Opera">
  <option value="Safari">
</datalist>

See the Pen form νƒœκ·Έ 7 by barzz12 (@inpaSkyrim) on CodePen.


<feildset> & <legend> νƒœκ·Έ

  • fieldset νƒœκ·ΈλŠ” κ΄€λ ¨λœ μž…λ ₯ 양식듀을 κ·Έλ£Ήν™”ν•  λ•Œ μ‚¬μš©ν•œλ‹€.
  • legend νƒœκ·ΈλŠ” fieldset νƒœκ·Έ λ‚΄μ—μ„œ μ‚¬μš©λ˜μ•Ό ν•˜λ©° κ·Έλ£Ήν™”λœ fieldset의 제λͺ©μ„ μ •μ˜ν•œλ‹€.
<form>
  <fieldset>
    <legend> Login </legend>
    ID : <input type="text" /> <br>
    password : <input type="password" />
  </fieldset>

  <br>

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

See the Pen form νƒœκ·Έ 6 by barzz12 (@inpaSkyrim) on CodePen.


<button> νƒœκ·Έ

  • λ²„νŠΌ μš”μ†Œ. νŽ˜μ΄μ§€μ— λ²„νŠΌμ„ λ„£κ³  form을 μ „μ†‘ν•˜κ±°λ‚˜ reset ν•  λ•Œ μ‚¬μš©ν•œλ‹€.
button type 속성 μ„€λͺ…
submit form 제좜
<button type="submit"> 전솑 </button>
reset from 리셋
<button type="reset"> λ‹€μ‹œμ“°κΈ° </button>
button λ²„νŠΌμ˜ ν˜•νƒœλ§Œ λ§Œλ“ λ‹€. λˆŒλ¦¬κ±°λ‚˜ ν–ˆμ„λ•Œ λ‹€λ₯Έ λ™μž‘μ„ ν•˜λ €λ©΄ λ”°λ‘œ ν•¨μˆ˜λ₯Ό 연결해야함
<button type="button" onclick="alert('onclick에 alertλ₯Ό μ“°λ©΄ μ΄λŸ°μ‹μœΌλ‘œ 경고창이 λœ¬λ‹€.')">
   Click Me!
</button>

See the Pen form νƒœκ·Έ 4 by barzz12 (@inpaSkyrim) on CodePen.

 

<button> vs <input> 차이점

μœ„μ—μ„œ 배운 <input type="button"> 으둜 λ²„νŠΌμ„ λ§Œλ“€μˆ˜ 있던데 이 λ‘˜μ˜ 차이점은 λ¬΄μ—‡μΌκΉŒ?

  1. <input> νƒœκ·ΈλŠ” μ’…λ£Œνƒœκ·Έ 없이 type 속성 μ΄μš©ν•΄ λ²„νŠΌμ— κΈ€μžλ‚˜ 이미지 λ„£μ§€λ§Œ, <button> νƒœκ·ΈλŠ” μ‹œμž‘νƒœκ·Έμ™€ μ’…λ£Œνƒœκ·Έ 사이에 κΈ€μžλ‚˜ 이미지 λ„£λŠ”λ‹€
  2. 항상 <button> νƒœκ·Έμ˜ type 속성을 λͺ…μ‹œν•΄μ€˜μ•Ό ν•œλ‹€. μ™œλƒν•˜λ©΄, IE(μ΅μŠ€ν”Œλ‘œλŸ¬) 경우 κΈ°λ³Έ νƒ€μž…μ΄ button μ΄μ§€λ§Œ, 타 λΈŒλΌμš°μ € 경우 κΈ°λ³Έ νƒ€μž…μ΄ submit 이기 λ•Œλ¬Έμ΄λ‹€.
  3. <form> νƒœκ·Έ μ•ˆμ—μ„œ λ²„νŠΌ λ§Œλ“€ 땐, λ°˜λ“œμ‹œ <input> νƒœκ·Έ μ΄μš©ν•΄ λ²„νŠΌ λ§Œλ“€μ–΄μ•Ό ν•œλ‹€. μ™œλƒν•˜λ©΄, 타 λΈŒλΌμš°μ €κ°€ <button>νƒœκ·Έμ˜ 속성값을 μ „μ†‘ν•˜λŠ” 반면, IEλŠ” μ‹œμž‘νƒœκ·Έμ™€ μ’…λ£Œνƒœκ·Έ μ‚¬μ΄μ˜ ν…μŠ€νŠΈλ‚˜ 이미지 μ „μ†‘ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

# 참고자료

https://www.javatpoint.com/html-form

https://www.nextree.co.kr/p8428/

https://internetingishard.com/html-and-css/forms/

https://poiemaweb.com/html5-tag-forms

http://www.tcpschool.com/html-tags/textarea

https://webisfree.com/2017-01-10/label-%ED%83%9C%EA%B7%B8%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EB%8B%A4%EC%96%91%ED%95%9C-%EB%B0%A9%EB%B2%95