πŸ‘©πŸ»‍πŸ’»STUDY/HTML

[HTML5] formμž‘μ„±(MDN)

jmjm 2020. 3. 13. 17:50

[HTML] form μž‘μ„±ν•˜κΈ°

HTML form ꡬ성방법

How to structure a web form

HTML form을 λ§Œλ“€ λ•Œ κ΅¬μ‘°ν™”ν•˜λŠ” 것이 μ€‘μš”ν•˜λ‹€.

form이 μ‚¬μš©ν•  수 μžˆλ‹€λŠ” 것을 보μž₯ν•˜κ³  접근성도 늘릴 수 있기 λ•Œλ¬Έμ΄λ‹€.(μž₯애인듀도 μ‰½κ²Œ μ‚¬μš© κ°€λŠ₯) HTML 폼의 접근성은 μ€‘μš”ν•œ 점이고 μ–΄λ–»κ²Œ 폼 접근성을 높일 수 μžˆλŠ”μ§€ μ•Œμ•„λ³΄μž.

HTML폼듀은 μœ μ—°μ„±μœΌλ‘œ 인해 HTML 쀑 λ³΅μž‘ν•œ ꡬ쑰λ₯Ό 가지고 μžˆλŠ” μš”μ†Œμ€‘ ν•˜λ‚˜μ΄λ‹€. λͺ¨λ“  λΈŒλΌμš°μ €μ—μ„œ 폼의 μ’…λ₯˜λŠ” 널리 κ΅¬ν˜„λ˜μ§€ μ•Šμ•˜λŠ”λ° μ΄λŠ” λŒ€λΆ€λΆ„ μžλ°”μŠ€ν¬λ¦½νŠΈμ— μ˜μ‘΄ν•˜μ—¬ HTML폼듀을 닀루기 λ•Œλ¬Έμ΄λ‹€.

이 λ¬Έμ„œμ—μ„œλŠ” HTML 폼 μš”μ†Œλ“€μ„ μ–΄λ–»κ²Œ μ‚¬μš©ν•˜μ§€ μžμ„Έν•˜κ²Œ μ„€λͺ…ν•  것이닀.

 

#1. form μš”μ†Œ

<form> μš”μ†ŒλŠ” κ³΅μ‹μ •μ‹μœΌλ‘œ 폼을 μ •μ˜ν•˜λŠ” μš”μ†Œλ‘œ 이 μš”μ†Œμ˜ μ†μ„±μœΌλ‘œ 폼의 μž‘λ™ν•˜λŠ” 방식을 μ •μ˜ν•  수 μžˆλ‹€.

HTML 폼을 생성할 λ•Œλ§ˆλ‹€ λ°˜λ“œμ‹œ 이 μš”μ†Œλ‘œ μ‹œμž‘ν•΄μ•Ό ν•œλ‹€.

폼을 λ‹€λ₯Έ 폼으둜 λ‘˜λŸ¬μ‹ΈλŠ” 것은 μ—„κ²©ν•˜κ²Œ μ œν•œλ˜μ–΄ μžˆλ‹€. λ§Œμ•½ μ‚¬μš©μžκ°€ 이λ₯Ό μ‚¬μš©ν•  경우 λΈŒλΌμš°μ €μ— 따라 μ˜ˆμΈ‘λΆˆκ°€λŠ₯ν•œ λ°©μ‹μœΌλ‘œ μž‘λ™ν•˜κ²Œ λœλ‹€.

 

<form>μš”μ†Œ 속성

속성 이름 κΈ°λ³Έκ°’ μ„€λͺ…
accept-charset UNKNOWN μ„œλ²„κ°€ 받아듀을 문자 μΈμ½”λ”©ν˜•μ‹μ„ 지정.
기본값은 νŠΉμˆ˜λ¬Έμžμ—΄ UNKNOWN이고 이 경우 폼 μš”μ†Œ μ•ˆμ— μžˆλŠ” λ¬Έμ„œμ˜ 인코딩에 λ§žλŠ” 인코딩이닀.
action   폼을 ν†΅ν•΄μ„œ μ „μ†‘ν•œ 정보λ₯Ό μ²˜λ¦¬ν•˜λŠ” μ›ΉνŽ˜μ΄μ§€ URL
autocomplete on 이 νΌμ•ˆμ— μžˆλŠ” μœ„μ ―λ“€μ˜ 기본값이 λΈŒλΌμš°μ €μ— μ˜ν•΄ μžλ™μ™„μ„±ν•˜κ²Œ λ˜λŠ”μ§€ μ—¬λΆ€λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.
이 속성은 두가지 값쀑 ν•˜λ‚˜λ₯Ό κ°–λŠ”λ‹€. on λ˜λŠ” off
enctype application/x-www-form-url-urlencoded /method 속성이 postκ°’μœΌλ‘œ μ§€μ •λ˜λ©΄, μ„œλ²„λ‘œ 폼을 μ „μ†‘ν•˜λŠ” μ½˜ν…μΈ  MIME의 νƒ€μž…μ„ μ§€μ •ν•œλ‹€.
* application/x-www-form-url-urlencoded
* multipart/form-data: <input>μš”μ†Œμ˜ νƒ€μž…μ†μ„±μ„ file둜 지정할 경우 이 μ†μ„±μ˜ 값을 μ‚¬μš©ν•œλ‹€.
* text/plain
method get λΈŒλΌμš°μ €κ°€ 폼을 μ „μ†‘ν•˜κΈ° μœ„ν•΄μ„œ μ‚¬μš©ν•˜λŠ” HTTP의 방식을 μ§€μ •ν•œλ‹€.
이 속성은 λ‘κ°œμ˜ 값쀑 ν•˜λ‚˜λ₯Ό 가진닀. get λ˜λŠ” post
name   폼의 이름이닀. 이 속성값은 λ°˜λ“œμ‹œ λ¬Έμ„œμ˜ 폼사이에 κ³ μœ ν•΄μ•Ό ν•˜λ©° λΉˆλ¬Έμžμ—΄μ„ 지정할 수 μ—†λ‹€. 일반적으둜 id μ†μ„±μœΌλ‘œ λŒ€μ‹  지정할 수 μžˆλ‹€.
novalidate (false) 이 λΆˆλ¦¬μ–Έ 속성은 폼이 전솑할 λ•Œ μœ νš¨μ„±κ²€μ‚¬λ₯Ό ν•  수 μ—†μŒμ„ λ‚˜νƒ€λ‚Έλ‹€.
target _self 폼 μš”μ²­μ„ μ „μ†‘ν•œ ν›„ 응닡을 μ–΄λ–»κ²Œ 받을 것인지 μ§€μ •ν•œλ‹€.
예λ₯Ό λ“€μ–΄ <iframe>, tab, window λ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€. μ΄μ†μ„±μ˜ ν‚€μ›Œλ“œλ‘œ λ‹€μŒκ³Ό 같은 값을 μ‚¬μš©ν•  수 μžˆλ‹€.
* _self : 응닡을 ν˜„μž¬ λΈŒλΌμš°μ§• μ»¨ν…μŠ€νŠΈ
(<iframe>, tab, window λ“±)μ—μ„œ λΆˆλŸ¬μ˜¨λ‹€.
* _blank : 응닡을 μƒˆλ‘œμš΄ λΈŒλΌμš°μ§• μ»¨ν…μŠ€νŠΈλ‘œ λΆˆλŸ¬μ˜¨λ‹€.
* _parent : 응닡을 ν˜„μž¬μ˜ λΈŒλΌμš°μ§• μ»¨ν…μŠ€νŠΈμ˜ λΆ€λͺ¨ λΈŒλΌμš°μ§• μ»¨ν…μŠ€νŠΈμ—μ„œ λΆˆλŸ¬μ˜¨λ‹€. λ§Œμ•½ λΆ€λͺ¨κ°€ μ—†λ‹€λ©΄ _self ν‚€μ›Œλ“œμ™€ λ˜‘κ°™μ΄μž‘λ™.
* _top : 응닡을 μ΅œμƒμœ„ 레벨 λΈŒλΌμš°μ§• μ»¨ν…μŠ€νŠΈμ—μ„œ λΆˆλŸ¬μ˜¨λ‹€. λ§Œμ•½ μ΅œμƒμœ„ μ»¨ν…μŠ€νŠΈκ°€ μ—†λ‹€λ©΄ _self ν‚€μ›Œλ“œμ™€ λ˜‘κ°™μ΄ μž‘λ™.

μš”μ†Œ 밖에 폼 μœ„μ ―λ“€μ„ μ‚¬μš©ν•  수 μžˆμ§€λ§Œ, 폼 μœ„μ ―μ΄ μ–΄λ– ν•œ 폼과도 상관이 μ—†λ‹€λŠ” 것을 μœ μ˜ν•΄μ•Ό ν•œλ‹€.

기술적으둜 HTML5λŠ” HTML 폼 μš”μ†Œμ—μ„œ 폼 속성을 μ„€λͺ…ν–ˆλ‹€. 이것은 μš”μ†Œλ“€μ„ μ‹€μ œλ‘œ <form> μ•ˆμ— μžˆμ§€ μ•Šμ•„λ„ form μš”μ†Œλ₯Ό ν™•μ‹€ν•˜κ²Œ λ°”μΈλ”©ν•˜λ„λ‘ ν•΄μ•Όν•œλ‹€. ν•˜μ§€λ§Œ λͺ¨λ“  λΈŒλΌμš°μ €κ°€ 아직 μΆ©λΆ„νžˆ μ§€μ›ν•˜μ§€ μ•Šμ•„ formμš”μ†Œμ— μ•Œλ§žκ²Œ μž‘μ„±ν•΄μ•Ό ν•œλ‹€.

 

 

#2. <fieldset>와 <legend>μš”μ†Œ

<fieldset>μš”μ†ŒλŠ” 같은 λͺ©μ μ„ 가진 μœ„μ ―λ“€μ„ νŽΈλ¦¬ν•˜κ²Œ κ·Έλ£Ήν™” ν•˜λŠ” 방법이닀.

<fieldset>μš”μ†ŒλŠ” 라벨인 <legend>μš”μ†Œμ™€ 같이 μ‚¬μš©λœλ‹€.

<legend> μš”μ†ŒλŠ” κ³΅μ‹μ •μœΌλ‘œ <fieldset>μš”μ†Œλ₯Ό μ„€λͺ…ν•˜λŠ”λ° μ‚¬μš©ν•˜κ±°λ‚˜ <fieldset> μš”μ†Œμ˜ 라벨둜 μ΄μš©ν•˜λŠ”λ° μ‚¬μš©λœλ‹€.

[예제]

<form>
  <fieldset>
    <legend>Fruit juice size</legend>
    <p>
      <input type="radio" name="size" id="size_1" value="small" />
      <label for="size_1">Small</label>
    </p>
    <p>
      <input type="radio" name="size" id="size_2" value="medium" />
      <label for="size_2">Medium</label>
    </p>
    <p>
      <input type="radio" name="size" id="size_3" value="large" />
      <label for="size_3">Large</label>
    </p>
  </fieldset>
</form>

이 예제λ₯Ό 슀크린 리더기가 Fruit juice size small을 λ¨Όμ € 읽고, Fruit juice size medium을 읽은 λ‹€μŒ, λ§ˆμ§€λ§‰μœΌλ‘œ Fruit juice size largeλ₯Ό 읽을 것이닀.

이 μ˜ˆμ œλŠ” μ€‘μš”ν•˜λ‹€. λŒ€λΆ€λΆ„ λΌλ””μ˜€ λ²„νŠΌμ„ μ„€μ •ν•  λ•Œλ§ˆλ‹€ <fieldset>μš”μ†Œ μ•ˆμ— μžˆλŠ”μ§€ 확인해야 ν•œλ‹€.

일반적으둜 <fieldset>μš”μ†ŒλŠ” 폼을 κ°•λ ₯ν•˜κ²Œ μ‚¬μš©ν•  수 있게 ν•΄μ€€λ‹€. 보쑰기술의 영ν–₯으둜 <fieldset> μš”μ†ŒλŠ” 폼 μ ‘κ·Ό ν•  수 μžˆλŠ” ν‚€ μš”μ†Œ 쀑 ν•˜λ‚˜μ΄λ‹€. κ°€λŠ₯ν•œ 폼을 λ§Œλ“€λ•Œλ§ˆλ‹€ μŠ€ν¬λ¦°λ¦¬λ”λ‘œ λ“€μ–΄λ³΄λ©΄μ„œ ν•˜λŠ” 것이 μ’‹λ‹€.

 

<fieldset> μš”μ†Œμ˜ 속성

속성 이름 κΈ°λ³Έκ°’ μ„€λͺ…
disabled (false) λ§Œμ•½ 이 λΆˆλ¦¬μ–Έμ˜ 속성이 μ„€μ •λ˜λ©΄ 폼은(첫 번째<legend>μš”μ†Œμ— μžˆλŠ” μš”μ†ŒλŠ” μ˜ˆμ™Έμ΄λ‹€.) 이것에 νŒŒμƒλœ μš”μ†Œλ₯Ό μ‚¬μš©ν•˜κ±°λ‚˜ νŽΈμ§‘ν•  수 μ—†κ²Œ λœλ‹€.
그리고 마우슀 클릭같은 μ–΄λ– ν•œ λΈŒλΌμš°μ €μ΄λ²€νŠΈλ“€λ„ 받지 μ•Šμ„ 것이닀.
일반적으둜 λΈŒλΌμš°μ €λŠ” νšŒμƒ‰μœΌλ‘œ 이λ₯Ό ν‘œμ‹œν•  것이닀.

 

#3. <label> μš”μ†Œ

<label>μš”μ†ŒλŠ” HTML 폼 μœ„μ ―μ„ μ •μ˜ν•˜λŠ” 곡식적인 방법이닀.

μ ‘κ·Όμ„± μžˆλŠ” 폼을 λ§Œλ“œλŠ”λ° κ°€μž₯ μ€‘μš”ν•œ μš”μ†Œμ΄λ‹€.

 

<label> μš”μ†Œμ˜ 속성

속성λͺ… κΈ°λ³Έκ°’ μ„€λͺ…
for   <label> μš”μ†Œμ™€ 같은 λ¬Έμ„œμ— μžˆλŠ” μœ„μ ―μ˜ 라벨의 ID.
λ¬Έμ„œμ•ˆμ˜ ID와 for속성값이 κ°™μœΌλ©΄ κ·Έ λΌλ²¨μš”μ†ŒλŠ” κ·Έ μœ„μ ―μ˜ 라벨이 λœλ‹€.

μš”μ†ŒλŠ” forμ†μ„±μœΌλ‘œ μ§€μ •ν•œ μœ„μ ―κ³Ό 묢여진닀. for속성은 ν•΄λ‹Ή μœ„μ ―μ˜ μ‹€μ œ id 속성을 μ°Έμ‘°ν•œλ‹€.

λͺ¨λ“  λΈŒλΌμš°μ €μ—μ„œ 곡식적인 라벨 μ„€μ •ν•˜λ©΄ μ‚¬μš©μžκ°€ 라벨을 λˆ„λ₯΄λ©΄ ν•΄λ‹Ήν•˜λŠ” μœ„μ ―μ΄ ν™œμ„±ν™” ν•  수 μžˆλ‹€. 이것은 λΌλ””μ˜€λ²„νŠΌμ΄λ‚˜ μ²΄ν¬λ°•μŠ€λ₯Ό μ‚¬μš©ν•˜λŠ”λ° 특히 μœ μš©ν•˜λ‹€.

 

[예제]

<form>
  <!-- μ˜³μ€ 방법 -->
  <p>
    <input type="checkbox" id="taste_1" name="taste_cherty" value="1" />
    <label for="taste_1">I like cherry</label>
  </p>
  <!-- μ˜³μ§€ μ•Šμ€ 방법 -->
  <p>
    <label for="taste_2">
    	<input type="checkbox" id="taste_2" name="taste_banana" value="1">
      I like banana
    </label>
  </p>
</form>

<label> for 속성(<input> μš”μ†Œμ˜ id 속성포함)을 톡해 <input>κ³Ό <label>이 μ˜¬λ°”λ₯΄κ²Œ μ—°κ²°λ˜λ©΄ μŠ€ν¬λ¦°λ¦¬λ”κΈ°λŠ” "이름, ν…μŠ€νŠΈ νŽΈμ§‘"κ³Ό 같은 λ‚΄μš©μ„ μ½λŠ”λ‹€.

ν•˜μ§€λ§Œ 양식에 λ§žμ§€ μ•Šμ„ 경우 슀크린 리더기가 μ½λŠ”λ° 였λ₯˜κ°€ 걸릴 수 μžˆλ‹€.

 

[예제 :: λ‹€μ–‘ν•œ 라벨이 μžˆμ„ 경우]

<p>Reqquired fields are followed by <abbr title="required">*</abbr>.</p>

<!-- So this: -->
<div>
  <label for="username">Name:</label>
  <input type="text" name="username">
  <label for="username"><abbr title="required" aria-label="required">*</abbr></label>
</div>

<!-- would be better done like this: -->
<div>
  <label for="username">
  	<span>Name:</span>
    <input id="username" type="text" name="username">
    <abbr title="required" aria-label="required">*</abbr>
  </label>
</div>

<!-- But this is probabbly best: -->
<div>
  <label for="username">Name: <abbr title="required" aria-label="required">*</abbr></label>
  <input id="username" type="text" name="username">
</div>

슀크린 λ¦¬λ”κΈ°λŠ” λ³„ν‘œ(*)λ₯Ό "별"이라고 ν•œλ‹€. λ³΄μ΄λŠ” 마우슀 μ‚¬μš©μžκ°€ 마우슀λ₯Ό κ°€μ Έκ°€λ©΄ title 속성을 μ‚¬μš©ν•˜μ—¬ "ν•„μˆ˜"κ°€ λ‚˜νƒ€λ‚œλ‹€. μ†Œλ¦¬λ‚΄μ–΄ μ½λŠ” 제λͺ©μ€ μŠ€ν¬λ¦°λ¦¬λ”κΈ°μ— 섀정에 따라 λ‹¬λΌμ§€λ―€λ‘œ aria-label속성도 ν¬ν•¨ν•˜λŠ” 것이 더 μ•ˆμ •μ μ΄λ‹€.

첫 번째 μ˜ˆμ œλŠ” label은 μ½ν˜€μ§€μ§€ μ•ŠλŠ”λ‹€. μ—¬λŸ¬ <label>μš”μ†ŒλŠ” μŠ€ν¬λ¦°λ¦¬λ”κΈ°κ°€ ν˜Όλ™μ„ ν•œλ‹€. ν•˜μ§€λ§Œ <input>μ—λŠ” 이와 κ΄€λ ¨λœ label이 μžˆκΈ°λ•Œλ¬Έμ— 첫 λ²ˆμ§Έλ³΄λ‹¨ λ‚«λ‹€.

두 번째 μ˜ˆμ œμ—μ„œ μŠ€ν¬λ¦°λ¦¬λ”κΈ°λŠ” "name star name edit text required"둜 μ½λŠ”λ‹€. μ—¬μ „νžˆ labelλ₯Ό κ°œλ³„μ μœΌλ‘œ μ½λŠ”λ‹€.

μ„Έ 번째 μ˜ˆμ œκ°€ κ°€μž₯ μ’‹λ‹€. "name required edit text"둜 μ½λŠ”λ‹€.

 

#3. HTML ꡬ쑰둜 form을 μ‚¬μš©ν•˜κΈ°

HTML의 λͺ¨λ“  κΈ°λŠ₯을 μ‚¬μš©ν•˜μ—¬ μ›Ή 양식을 ꡬ성할 수 μžˆλ‹€.

μ˜ˆμ œμ—μ„œ λ³Ό 수 μžˆλ“―μ΄ labelκ³Ό ν•΄λ‹Ή μœ„μ ―μ„ <ul> λ˜λŠ” <ol> λͺ©λ‘λ‚΄μ˜ <li>μš”μ†Œλ‘œ κ°μ‹ΈλŠ” 것이 μΌλ°˜μ μ΄λ‹€. <p> 및 <div>μš”μ†Œλ„ 일반적으둜 μ‚¬μš©λœλ‹€. μ—¬λŸ¬κ°œμ˜ ν™•μΈλž€ λ˜λŠ” λΌλ””μ˜€ λ²„νŠΌμ„ ꡬ성할 λ•Œ λͺ©λ‘μ΄ ꢌμž₯λœλ‹€.

<fieldest> μš”μ†Œ 외에도 HTML 제λͺ©(예 : <h1> , <h2>) 및 μ„Ήμ…˜(예 : <section>)을 μ‚¬μš©ν•˜μ—¬ λ³΅μž‘ν•œ 양식을 κ΅¬μ„±ν•˜λŠ” 것이 μΌλ°˜μ μ΄λ‹€.

 

  1. <form> νƒœκ·Έ μ•ˆμ— 제λͺ©κ³Ό 단락을 μΆ”κ°€ν•˜μ—¬ ν•„μš”ν•œ ν•„λ“œκ°€ ν‘œμ‹œλ˜λŠ” 방식을 μ‚¬μš©μžμ—κ²Œ μ•Œλ €μ€€λ‹€.

    <form>
    	<h1>Payment form</h1>
      <p>Required fields are followed by <strong><abbr title="required">*</abbr></strong>.</p>
    </form>
    
  2. ν•­λͺ© μ•„λž˜μ— 더큰 μ½”λ“œ μ„Ήμ…˜μ„ μΆ”κ°€ν•œλ‹€. μ—¬κΈ°μ—μ„œ μ—°λ½μ²˜ 정보 ν•„λ“œλ₯Ό λ³„κ°œμ˜ <section>μš”μ†Œ μ•ˆμ— λ‹΄λŠ”λ‹€. λ˜ν•œ λ‘κ°œμ˜ λΌλ””μ˜€ λ²„νŠΌ μ„ΈνŠΈκ°€ 있으며 각 λΌλ””μ˜€ λ²„νŠΌμ€ 자체λͺ©λ‘(<li>) μš”μ†Œ μ•ˆμ— μžˆλ‹€. λ˜ν•œ λ‘κ°œμ˜ ν‘œμ€€ν…μŠ€νŠΈ <input>κ³Ό <p>μ•ˆμ— ν¬ν•¨λœ κ΄€λ ¨ <label>μš”μ†Œμ™€ μ•”ν˜Έ μž…λ ₯을 μœ„ν•œ ν•„λ“œλ₯Ό μΆ”κ°€ν•œλ‹€.

    <section>
    	<h2>Contact information</h2>
      <fieldset>
        <legend>Title</legend>
        <ul>
          <li>
          	<label for="title_1">
            	<input type="radio" id="title_1" name="title" value="K">King
            </label>
          </li>
          <li>
          	<label for="title_2">
            	<input type="radio" id="title_2" name="title" value="Q">Queen
            </label>
          </li>
          <li>
          	<label for="title_3">
            	<input type="radio" id="title_3" name="title" value="J">Joker
            </label>
          </li>
        </ul>
      </fieldset>
      <p>
        <label for="name">
        	<span>Name: </span>
          <strong><abbr title="required">*</abbr></strong>
        </label>
        <input type="text" id="name" name="username">
      </p>
      <p>
        <label for="mail">
        	<span>E-mail: </span>
          <strong><abbr title="required">*</abbr></strong>
        </label>
        <input type="email" id="mail" name="usermail">
      </p>
      <p>
        <label for="pwd">
        	<span>Password: </span>
          <strong><abbr title="required">*</abbr></strong>
        </label>
        <input type="password" id="pwd" name="password">
      </p>
    </section>
    
  3. μ„Ήμ…˜μ„ ν•˜λ‚˜ 더 μΆ”κ°€ν•œλ‹€. 첫 λ²ˆμ§ΈλŠ” μ‹ μš©μΉ΄λ“œ μœ ν˜•μ„ μ„ νƒν•˜κΈ° μœ„ν•΄ λ“œλ‘­λ‹€μš΄ 메뉴(<select>)λ₯Ό μ“΄λ‹€. 두 λ²ˆμ§ΈλŠ” μ‹ μš©μΉ΄λ“œ 번호λ₯Ό μž…λ ₯ν•˜κΈ° μœ„ν•΄ tel μœ ν˜•μ˜ <input>μš”μ†Œλ₯Ό μ“΄λ‹€. 숫자 μœ ν˜•μ„ μ‚¬μš©ν•  수 μžˆμ§€λ§Œ μŠ€ν”Όλ„ˆ UIλŠ” 숫자λ₯Ό μ›ν•˜μ§€ μ•ŠλŠ”λ‹€. λ§ˆμ§€λ§‰μœΌλ‘œ μΉ΄λ“œλ§Œλ£Œ λ‚ μ§œλ₯Ό μž…λ ₯ν•˜κΈ° μœ„ν•΄ λ‚ μ§œ μœ ν˜•μ˜ <input>μš”μ†Œλ₯Ό μ‚¬μš©ν•œλ‹€. 이 λΈŒλΌμš°μ €λŠ” μ§€μ›λΈŒλΌμš°μ €μ—μ„œ λ‚ μ§œ 선택도ꡬλ₯Ό μ œκ³΅ν•˜λ©° μ§€μ›λ˜μ§€ μ•ŠλŠ” λΈŒλΌμš°μ €λŠ” μΌλ°˜ν…μŠ€νŠΈ μž…λ ₯으둜 λŒ€μ²΄ν•œλ‹€. 이 방법은 HTML5μ—μ„œ λ„μž…λ˜μ—ˆλ‹€.

    <section>
    	<h2>Payment information</h2>
    	<p>
        <label for="card">
        	<span>Card type: </span>
        </label>
        <select id="card" name="usercard">
          <option value="visa">Visa</option>
          <option value="mc">Mastercard</option>
          <option value="amex">American Express</option>
        </select>
      </p>
      <p>
        <label for="number">
        	<span>Card number: </span>
          <strong><abbr title="required">*</abbr></strong>
        </label>
        <input type="tel" id="number" name="cardnumber">
      </p>
      <p>
        <label for="date">
        	<span>Expiration date: </span>
          <strong><abbr title="required">*</abbr></strong>
          <em>formatted as mm/yy</em>
        </label>
        <input type="date" id="date" name="expiration">
      </p>
    </section>
    
  4. λ§ˆμ§€λ§‰μœΌλ‘œ <button type="submit">을 λ§Œλ“€μ–΄ μ€€λ‹€. submit은 데이터λ₯Ό 보내쀀닀.

    <p>
      <button type="submit">Validate the payment</button>
    </p>
    
  5. κ²°κ³Ό