Index
Index1. <Form> 기본 속성1.1 폼 동작 방식1.2 폼의 속성1.3 폼의 타입2. <input>3. <label>3.1 <label> 의 사용법3.2 for 속성4. <select>4.1 <select>의 속성들4.2 <option>의 속성들5. <fieldset>6. <legend>7. <button>7.1 button 태그의 type7.2 Input vs button 무엇을 써야할까?8. 실습
1. <Form>
기본 속성
폼은 정보를 입력하는 영역입니다. 로그인 화면에서 아이디와 비밀번호를 입력하는 것, 회원 가입할 때 정보를 입력하는 양식 등은 모두 폼을 이용합니다. 폼에 입력을 하면 데이터는 서버로 전송을 하게 되고, 전송한 데이터는 웹 서버가 처리하며, 다시 다른 웹 페이지를 보여줍니다.

1.1 폼 동작 방식
- 웹 페이지에 있는 form에 데이터를 입력합니다.
- 웹 페이지 내 액션이 일어나게 되면 데이터는 웹 서버로 이동하게 됩니다.
- 웹 서버는 데이터를 처리하기 위해 APP을 호출합니다. 이때 APP은 물리적으로 별도의 서버일 수도 있습니다.
- 필요에 따라 APP은 DB로 데이터를 전송합니다. 이때 DB는 물리적으로 별도의 서버일 수도 있습니다.
- DB에서 CRUD 작업이 일어나고 작업 결과를 APP으로, WEB으로 전송합니다.
CRUD
- 웹 서버는 받은 결과를 Client 브라우저에게 보냅니다.
- 사용자 브라우저는 Response 받은 페이지를 렌더링하여 사용자에게 보여줍니다.
1.2 폼의 속성
form의 속성은 아래 표와 같이 이루어져 있습니다.
form 속성
1.3 폼의 타입
Form 타입
2. <input>
input은 사용자가 다양하게 폼 태그에 입력할 수 있는 공간을 만들어 주고, 사용자에게 정보를 입력을 받습니다.
input의 속성은 아래 표와 같이 이루어져 있습니다.
input의 속성
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>form</title> </head> <body> <input type="text"><br> <input type="password"><br> <input type="date"><br> <input type="time"><br> <input type="range"><br> <input type="color"><br> <input type="radio"><br> <input type="checkbox"><br> <input type="file"><br> <textarea name="name" rows="8" cols="80"></textarea> </body> </html>
3. <label>
단순히
input
태그를 설명하는 텍스트를 옆에 붙여 무엇을 입력해야 하는지 설명할 수 있겠지만, 시각 장애인들도 폼을 사용할 수 있도록 시멘틱한 <label>
요소를 사용하도록 합시다.3.1 <label>
의 사용법
label
은 두 가지 사용법이 있습니다.- 텍스트의 설명과 폼 입력 모두를 포함하는 방식
<label> 이름 : <input type="text" name="name"> </label>
- 폼 입력에서 분리하여
for
속성을 이용해 레이블을 지정하는 방식
<label for="myName">이름 : </label> <input type="text" name="name" id="myName">
3.2 for
속성
for
속성은 레이블이 속한 input
과 같은 폼 컨트롤(input, select, textarea
와 같은 요소들)을 의미합니다. 위의 예시에서도 알 수 있듯, for
속성의 값은 해당 레이블이 속할 폼 컨트롤의 id
값과 일치해야 합니다. 레이블과 폼 컨트롤이 연결되면 레이블을 선택해도 해당하는 폼 컨트롤이 선택된 것과 같이 작동합니다. 이러한 점 때문에 사용자는 클릭 할 수 있는 영역이 더 넓어져 폼을 쉽게 사용할 수 있게 됩니다.4. <select>
<select>
요소는 드롭다운 리스트 박스를 생성합니다. 이때 사용자가 선택해야하는 리스트 박스안의 아이템을 만들 때에는 <option>
태그를 사용합니다. <form action=""> <label for="myDevice">현재 사용하고 있는 스마트폰의 제조사를 선택해주세요</label> <select name="device" id="myDevice"> <option value="iphone">아이폰</option> <option value="galaxy">갤럭시폰</option> <option value="ㅜㅜ">LG폰</option> </select> </form>
4.1 <select>
의 속성들
- multiple="multiple" :
multiple
속성을 사용하면 사용자가 여러개의option
요소를 선택할 수 있게 됩니다. 단, 단순 클릭으로는 선택되지 않으며 windows 에서는ctrl
, OSX 에서는command
버튼을 누르고 클릭해야 여러개를 선택할 수 있습니다.
- size :
size
속성을 통해 드롭다운 리스트에서 한번에 보여줄 수 있는option
의 갯수를 조절할 수 있습니다.
4.2 <option>
의 속성들
- value :
<option>
요소는value
속성을 사용하여 선택값에 따라 서버에 어떠한 값을 전송할지 설정할 수 있습니다.
- selected :
selected
속성은 페이지가 로딩되고 난 뒤 기본으로 선택되는 옵션을 나타내는데 사용합니다.selected
옵션을 사용하지 않으면 첫번째<option>
이 페이지 로드 시 선택되고, 아무것도 선택하지 않고 데이터를 서버로 전송하면 첫번째<option>
값의value
가 전송됩니다.
5. <fieldset>
fieldset
요소를 사용하면 그 자식 요소로 사용되는 폼 컨트롤들을 그룹화 할 수 있습니다. 특히 폼 내용이 방대하여 섹션별로 나눌 필요성이 있을 경우 유용하게 사용됩니다. 브라우저가 기본적으로 구현하는 스타일을 보시면 그 의미가 더 명확합니다.<!-- 브라우저에서 어떻게 표현되는지 확인해보세요 --> <form action=""> <fieldset> <legend>개인정보</legend> <label for="myName">이름</label> <input type="text" name="name" id="myName"> <label for="myTel">전화번호</label> <input type="tel" name="tel" id="myTel"> <label for="myEmail">이메일</label> <input type="email" name="email" id="myEmail"> </fieldset> <fieldset> <legend>개인정보 제공 동의</legend> <label for="checkAgree">개인정보 제공에 동의하십니까?</label> <input type="checkbox" name="agree" id="checkAgree"> </fieldset> </form>
6. <legend>
<legend>
요소는 <fieldset>
태그 바로 뒤에 위치하며 폼 그룹의 목적을 나타내는 제목을 의미합니다. 반드시 <fieldset>
의 첫번째 자식으로 사용해야합니다.7. <button>
<button> 태그는 클릭 가능한 버튼을 나타냅니다. 버튼의 표시 방법을 다양하게 제어하고 버튼 내부에 다른 자식 요소를 추가하고 싶을 때 사용합니다.
7.1 button 태그의 type
type은 버튼의 행동 방식을 설정하는 속성입니다.
submit
: 버튼이 서버로 양식 데이터를 제출합니다. 지정하지 않은 경우 기본값이며, 유효하지 않은 값일 때도 사용합니다. 때문에 form 양식을 제출하기 위한 용도가 아니라면 반드시 type을 선언해줍시다.
reset
:<input type="reset">
처럼, form의 모든 값을 초기화시킵니다.
button
: 클릭 가능한 버튼입니다. 사용자가 기능을 부여하기 전까지는 별 다른 작동을 하지 않습니다.

<!-- 네이버 메인 화면의 검색 버튼 html 구조 --> <button id="search_btn" type="submit" title="검색"> <span class="blind">검색</span> <span class="ico_search_submit"></span> </button>
7.2 Input vs button 무엇을 써야할까?
<button>
요소는 <input>
요소보다 스타일을 적용하기 훨씬 수월합니다. <input>
은 닫는 태그가 없기 때문에 value
특성에 텍스트 값 밖에 지정할 수 없지만, <button>
은 내부에 여러가지 자식 컨텐츠를 추가할 수 있고 여기 더해 ::after
와 ::before
와 같은 가상 요소를 사용하는 것도 가능합니다. 더 다채롭고 멋진 스타일을 적용해야 한다면 <button>
요소를 우선적으로 고려해 보는것이 좋습니다.8. 실습
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>form</title> </head> <body> <!-- action에는 도달하는 주소를 적는데 안적으면 자기 자신 --> <form action="" method="get"> <label for="id">아이디</label> <input type="text" name="아이디" id="id"><br> <label for="pw">패스워드</label> <input type="password" name="패스워드" id="pw"><br> <label for="male">남</label> <input type="radio" name="성별" id="male" value="남"> <label for="female">여</label> <input type="radio" name="성별" id="female" value="여"><br> <p>즐겨 사용하는 프로그래밍 언어</p> <input type="checkbox" name="언어" id="python" value="Python"><label for="python">Python</label><br> <input type="checkbox" name="언어" id="python" value="Javascript"><label for="python">Javascript</label><br> <input type="checkbox" name="언어" id="python" value="C"><label for="python">C</label><br> <input type="submit" value="회원가입"> </form> </body> </html>
자주 사용되는 속성
- checked : 체크상태 표시
- required : 필수값
- min : 최솟값
- max : 최댓값
- value : 입력된 값
- placeholder : 입력값 힌트
- minlength : 최소 길이
- maxlength : 최대 길이