<form>
태그사용자 입력/선택을 서버측으로 전송하는 태그
<form>
태그의 모든 요소를 서버측으로 보낸다는 뜻- 서버의 경로를
action
이라고 하고, 보내는 방법을method
라고 함
<form>
태그의 주요 하위 태그
<input>
: 사용자 입력/선택(단일 행 입력)<textarea>
: 사용자 입력(다중 행 입력)<select>
: 사용자 선택<botton>
: 서브밋하기 위한 요소<fieldset>
: 입력/선택 요소들을 그룹화
<form>
태그의 속성
- 1)
action
- 데이터를 전송할 서버의 경로
- 서버 내부 경로를 주로 작성
- 2)
method
- 데이터를 전송하는 방식
- GET 방식
① 디폴트(생략가능)
② 전송하는 데이터가 주소(URL)에 노출
③ 빠른 전송, 보안 취약- POST 방식
① 전송하는 데이터를 본문에 포함시킴(노출되지 않음)
② 느린 전송, 보안 우수
- 3)
enctype
- 파일을 첨부할 때 사용하는 속성
- 파일 첨부가 필요한
<form>
태그
① method="post"
② enctype="multipart/form-data"
<Input>
태그type="text" placeholder="텍스트"
<form>
<input type="text" placeholder="텍스트"><br>
</form>
type="text"
로 지정해둔다면, 웹 문서에 text를 입력할 수 있는 텍스트 박스를 만들 수 있다.
placeholder
값은 사용자가 입력할 수 있는 값에 대한 견본 값이나 입력 형식에 대한 간단한 설명 등이 사용되며, 사용자가 입력하기 전까지 입력 필드에 표시되다가 사용자가 입력을 시작하면 사라진다.
type="text" value="텍스트"
<form>
<input type="text" value="텍스트"><br>
</form>
value
값은 이미 '텍스트' 라는 값이 default로 들어가 있는 상태로 만든다.
readonly (읽기전용)
<form>
<input type="text" value="텍스트" readonly><br>
</form>
만약 readonly
속성을 추가해준다면 읽기만 가능한 상태로 만들 수 있다.
input type="password" placeholder="비밀번호" required
<form>
<input type="password" placeholder="비밀번호" required><br>
</form>
type="text"
라고 속성을 주면, ●●●●와 같이 프라이빗하게 입력할 수 있는 창을 만들 수 있다.
required
속성을 입력하면 필수로 입력하게 할 수 있다.
type="number" min="0" max="100"
<form>
<input type="number" placeholder="숫자" min="0" max="100"><br>
</form>
type="number"
라고 속성을 주면 숫자타입의 데이터만 입력할 수 있다.
min
은 최소 숫자를 입력하여 받을 수 있고, max
는 최대 숫자를 입력해서 받을 수 있다.
위의 코드는 0에서 100까지의 숫자를 받을 수 있다.
type="email"
<form>
<input type="email" placeholder="이메일"><br>
</form>
type="email"
라고 속성을 주면 이메일 형식의 데이터만 입력할 수 있다.
type="url"
<form>
<input type="url" placeholder="URL"><br>
</form>
type="url"
라고 속성을 주면 url 링크 형식의 데이터만 입력할 수 있다.
type="file"
<form>
<input type="file"><br>
</form>
type="file"
라고 속성을 주면 파일을 받아낼 수 있다.
- 서버 측에서 인식하는 파라미터(parameter)의 이름
- 동일한 name이 없는 경우 서버 측에서는 변수로 인식
- 동일한 name이 여러 개 있으면 서버 측에서는 배열로 인식
- 서브밋(submit)할 때 사용
- 자바에서 곧바로 인식하기 때문에 자바 네이밍(camel case)을 사용
<form>
<input type="text" placeholder="성" name="lastName">
<input type="text" placeholder="이름" name="firstName">
<button>전송</button>
</form>
name속성
에 lastName
을 달고 데이터를 전송하게 되면 서버측에서 lastName
을 인식할 것이다.
<input>
태그<input>
태그 (radio)
<input type="radio">
- 여러 개의 선택 중 하나만 선택할 수 있음
- 동일한 항목을 작성하는 경우 동일한 name 속성을 사용해야 함(서버 측에서 변수로 인식)
- 모든 선택 요소에는 value 속성이 지정되어 있어야 서버 측에서 value 속성을 확인할 수 있음
<form>
<fieldset>
<legend>성별</legend>
<input type="radio" name="gender" value="1">남
<input type="radio" name="gender" value="2">여
<input type="radio" name="gender" value="3" checked>선택안함 <!--checked속성이 체크되어있는 곳에 default로 선택이 되어있다.-->
<button>전송</button>
</fieldset>
</form>
<input>
태그 (checkbox)
<input type="checkbox">
- 여러 개의 선택 중 여러개 선택할 수 있음
- 동일한 name 속성을 사용 -> 서버 측에서 배열로 인식
다른 name 속성을 사용 -> 서버 측에서 변수로 인식- 모든 선택 요소에는 value 속성이 지정되어 있어야 서버 측에서 value 속성을 확인할 수 있음
<form>
<fieldset>
<legend>동의여부</legend>
<input type="checkbox" name="agreement" value="1">개인정보약관
<input type="checkbox" name="agreement" value="2">사이트이용약관
<input type="checkbox" name="agreement" value="3">맞춤광고동의
<button>전송</button>
</fieldset>
</form>
<input type="text">
태그는 사용자 입력이 한 줄만 가능<textarea></textarea>
태그는 사용자 입력이 여러 줄 가능- rows 속성 : 행(row)의 개수
- cols 속성 : 열(column)의 개수
<form>
<textarea name="conference" placeholder="회의록 작성" rows="3" cols="5"></textarea><br>
<button>전송</button>
</form>
<Select>
태그
- 목록을 만드는 태그
- 목록 중 1개(그 이상)를 선택할 수 있음
- 목록의 각 항목은
<option>
태그로 작성- 각
<option>
태그들은 value 속성이 지정되어 있어야 서버 측에서 value 속성을 확인할 수 있음
<form>
<select>
<option value="">선택안함</option>
<option selected value="010">010</option> <!--Select태그안이라서 selected를 이용하여 default값을 지정해준다.-->
<option value="02">02</option>
<option value="031">031</option>
<option value="032">032</option>
</select>
-
<input type="text" maxlength="4" size="4">
-
<input type="text" maxlength="4" size="4">
<button>전송</button>
</form>
- 선택을 위한
<datalist>
태그와 입력을 위한<input>
태그를 사용<input>
태그에<datalist>
태그를 연결하는 방식으로 작성
<form>
<input type="text" name="userId" placeholder="아이디">
@
<input type="text" list="domains" name="domains" placeholder="선택 또는 입력">
<datalist id="domains">
<option value="naver.com"></option>
<option value="kakao.com"></option>
<option value="gmail.com"></option>
</datalist>
</form>
<button type="submit">
: 서브밋, type 생략 가능<input type="submit">
: 서브밋<input type="reset">
: 입력 요소 초기화<input type="button">
: 아무 일도 안함(주로 할 일을 자가스크립트로 등록할 때 사용)
<form>
<input type="text" name="name" placeholder="이름">
<input type="text" name="age" placeholder="나이" maxlength="3" size="3">
<button>서브밋</button>
<input type="submit" value="서브밋">
<input type="reset" value="입력초기화">
<input type="button" value="클릭" onclick="alert('아야')">
</form>
<form method="post">
여야 함<form enctype="multipart/form-data">
여야 함- 다중 첨부가 필요한 경우 multiple 속성(boolean 속성)을 추가함
- 이미지 파일 타입을 accept 속성에 지정해 줄 수 있다.
모든 타입 : *
<form method="post" enctype="multipart/form-data">
증명사진
<input type="file" name="profile" accept="image/*" multiple>
</form>
<label>
태그
- 특정 입력 요소에 붙이는 이름표
<label>
태그를 선택하는 것으로 입력 요소를 선택할 수 있음- 텍스트나 이미지 등에 label태그를 걸어두면 그것을 클릭하는 것만으로도 입력 요소를 선택할 수 있다.
<form>
<fieldset>
<legend>성별</legend>
<input type="radio" name="gender" value="1">
<label for="male">남</label>
<input type="radio" name="gender" value="2">
<label for="female">여</label>
<input type="radio" name="gender" value="3">
<label for="none">선택안함</label>
<button>전송</button>
</fieldset>
</form>