HTML 폼 가이드 - Web 개발 학습하기 | MDN
<form>
태그 기본 개요<form>
태그는 HTML 문서 내에서 폼을 정의하는 기본 태그입니다. <form>
태그는 웹 서버와 데이터를 주고받기 위한 틀을 제공하며, action
속성으로 데이터를 전송할 URL을, method
속성으로 전송 방식을 지정할 수 있습니다.
action
: 폼 데이터를 전송할 URL을 지정합니다.method
: 전송 방식을 설정합니다. 일반적으로 GET
이나 POST
방식이 사용됩니다.<input>
태그)<input>
태그는 다양한 형태의 입력 필드를 제공합니다. 이 태그는 type
속성에 따라 다른 기능을 갖게 되며, 사용자로부터 텍스트, 숫자, 날짜, 파일 등 여러 유형의 데이터를 입력받을 수 있습니다.
type="text"
)maxlength
, size
, placeholder
등의 속성으로 입력 길이, 표시 크기, 안내 문구를 설정할 수 있습니다.type="password"
)*
또는 •
기호로 숨겨집니다.type="email"
)type="url"
)type="tel"
)pattern
속성을 활용해 전화번호 형식을 제한할 수 있습니다.<textarea>
태그)rows
와 cols
속성으로 세로, 가로 크기를 설정할 수 있으며, placeholder
속성으로 안내 문구를 표시할 수 있습니다.type="number"
)min
, max
속성으로 입력할 수 있는 숫자의 범위를 제한할 수 있습니다.type="range"
)min
, max
, step
속성을 통해 범위와 간격을 지정할 수 있습니다.<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!-- 사용자 입력을 받기 위한 폼 시작 -->
<form>
<!-- 한 줄 문자열 입력 필드 -->
입력: <input type="text" /><br />
<!-- 한 줄 문자열 입력 필드, 입력란의 너비를 50자로 설정 -->
입력: <input type="text" size="50" /><br />
<!-- 입력 필드, 너비 50자, 최대 입력 글자 수를 10자로 제한 -->
입력: <input type="text" size="50" maxlength="10" /><br />
<!-- 입력 필드, 초기값으로 "초기값"이 표시됨 -->
입력: <input type="text" size="50" maxlength="10" value="초기값" /><br />
<!-- 입력 필드, 초기값 "초기값" 표시 및 읽기 전용 (수정 불가) -->
입력: <input type="text" size="50" maxlength="10" value="초기값" readonly /><br />
<!-- 입력 필드, 입력 전 "값입력"이라는 안내 문구가 표시됨 -->
입력: <input type="text" size="50" maxlength="10" placeholder="값입력" /><br />
<br />
<!-- 비밀번호 입력 필드 (입력값 숨김 처리) -->
입력: <input type="password" /><br />
<br />
<!-- 여러 줄 입력 필드 시작 -->
<textarea></textarea><br />
<!-- 여러 줄 입력 필드, 5줄 높이와 50자 너비 설정 -->
<textarea rows="5" cols="50"></textarea><br />
<!-- 여러 줄 입력 필드, 초기값으로 "초기값"이 표시됨 -->
<textarea rows="5" cols="50">초기값</textarea><br />
<!-- 여러 줄 입력 필드, 입력 전 "값입력"이라는 안내 문구가 표시됨 -->
<textarea rows="5" cols="50" placeholder="값입력"></textarea><br />
</form>
<!-- 폼 끝 -->
</body>
</html>
type="date"
)value
속성으로 기본 날짜를 설정할 수 있습니다.type="time"
)type="datetime-local"
)type="file"
)type="color"
)value
속성으로 설정할 수 있습니다.<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<!-- 화면 크기에 따라 레이아웃을 조정하도록 설정 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!-- 사용자 입력을 받기 위한 폼 시작 -->
<form>
<!-- 파일 경로 입력 필드, 파일 선택을 위한 버튼 제공 -->
<input type="file" /><br /><br />
<!-- 색상 선택 필드, 색상 선택 툴을 통해 사용자 지정 가능 -->
<input type="color" /><br />
<!-- 기본 색상을 #ff00ff (분홍색)으로 설정 -->
<input type="color" value="#ff00ff" /><br /><br />
<!-- 날짜 선택 필드, 달력에서 날짜를 선택할 수 있음 -->
<input type="date" /><br />
<!-- 기본 날짜를 2024년 5월 5일로 설정 -->
<input type="date" value="2024-05-05" /><br /><br />
<!-- 숫자 입력 필드 -->
<input type="number" /><br />
<!-- 최소값 1, 최대값 10으로 설정하고 초기값을 5로 설정 -->
<input type="number" min="1" max="10" value="5" /><br />
</form>
<!-- 폼 끝 -->
</body>
</html>
type="checkbox"
)name
속성을 동일하게 하여 여러 옵션을 그룹으로 묶을 수 있습니다.type="radio"
)name
속성을 가진 버튼들은 하나의 그룹으로 묶이며, 하나만 선택 가능합니다.<select>
태그)<select>
태그와 <option>
태그를 사용하여 드롭다운 메뉴를 만듭니다.multiple
속성으로 여러 개를 선택할 수 있습니다.<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>입력 태그 연습 - 02</title>
</head>
<body>
<form>
<!-- 체크박스 (여러 개의 선택 가능) -->
<!-- 여러 개의 옵션 중에서 여러 개 선택이 가능합니다. -->
<label><input type="checkbox" name="hobby" value="sports" /> 스포츠</label><br />
<label><input type="checkbox" name="hobby" value="music" /> 음악</label><br />
<label><input type="checkbox" name="hobby" value="reading" /> 독서</label><br /><br />
<!-- 라디오 버튼 (하나만 선택 가능) -->
<!-- 여러 개의 옵션 중 하나만 선택할 수 있습니다. 같은 name을 공유하여 그룹으로 묶습니다. -->
<label><input type="radio" name="gender" value="male" /> 남성</label><br />
<label><input type="radio" name="gender" value="female" /> 여성</label><br /><br />
<!-- 이메일 입력 -->
<!-- 이메일 형식이 맞는지 확인하는 입력 필드입니다. -->
<label for="email">이메일:</label>
<input type="email" id="email" name="email" placeholder="example@example.com" required /><br /><br />
<!-- URL 입력 -->
<!-- 웹사이트 URL을 입력할 때 사용하는 필드입니다. -->
<label for="website">웹사이트:</label>
<input type="url" id="website" name="website" placeholder="https://example.com" /><br /><br />
<!-- 전화번호 입력 -->
<!-- 전화번호를 입력할 수 있으며, 형식을 확인할 수 있습니다. -->
<label for="phone">전화번호:</label>
<input type="tel" id="phone" name="phone" placeholder="010-1234-5678" pattern="[0-9]{3}-[0-9]{4}-[0-9]{4}" /><br /><br />
<!-- 숨김 입력 -->
<!-- 사용자가 보지 못하도록 숨겨진 데이터를 저장할 때 사용됩니다. -->
<input type="hidden" name="userID" value="12345" />
</form>
</body>
</html>
type="submit"
)type="reset"
)type="button"
)<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Form Example</title>
</head>
<body>
<!-- form 태그를 사용하여 사용자로부터 데이터를 입력받고, 서버에 전송하는 예제입니다.
- action 속성 : 입력된 데이터를 처리할 페이지의 경로를 지정합니다.
- method 속성 : 데이터 전송 방식을 지정합니다.
- GET : 데이터를 URL의 쿼리 문자열로 포함해 전송합니다. 주로 검색이나 조회 요청에 사용되며, 데이터가 URL에 노출됩니다.
- POST : 데이터를 요청의 본문에 포함해 전송합니다. 주로 사용자 정보를 안전하게 전송할 때 사용되며, 데이터가 URL에 노출되지 않습니다.
예시 :
http://127.0.0.1:8080/process.html?data1=1&data2=10
- URL : process.html (데이터를 처리할 서버의 URL)
- 데이터 : data1=1, data2=10 (GET 방식일 경우 URL에 포함됨)
- 전송 방식 : POST를 사용하면 URL에 데이터가 표시되지 않음
-->
<!-- POST 방식으로 서버에 데이터를 전송하는 폼 -->
<form action="process.html" method="post">
<!-- 입력 필드: 사용자로부터 data1 값을 입력받음
name 속성 : 서버에서 이 값을 받아 처리할 때 사용되는 필드 이름입니다. -->
<label for="data1">Data 1:</label>
<input type="text" id="data1" name="data1" />
<!-- 입력 필드: 사용자로부터 data2 값을 입력받음
name 속성 : 서버에서 이 값을 받아 처리할 때 사용되는 필드 이름입니다. -->
<label for="data2">Data 2:</label>
<input type="text" id="data2" name="data2" />
<!-- 폼 제출 버튼
type="submit" : 폼을 전송할 때 사용하는 버튼을 생성합니다. 클릭 시, action 속성에 지정된 페이지로 데이터를 전송합니다. -->
<input type="submit" value="제출하기" />
</form>
</body>
</html>
type="hidden"
)required
: 필수 입력 필드로 지정하여 값이 입력되지 않으면 폼이 제출되지 않도록 설정합니다.pattern
: 정규 표현식을 사용해 입력 값의 형식을 제한합니다.placeholder
: 입력 필드에 안내 문구를 표시하여 사용자가 입력할 내용에 대한 힌트를 제공합니다.min
, max
, step
: 숫자 및 범위와 관련된 필드에서 입력 가능 범위를 지정합니다.