1. 폼 (FORM)


1) FORM의 기능

- Form을 이용하여 사용자가 입력한 정보를 서버에 전송

- 서버의 폼 처리기에서 정보를 저장하거나 사용

2) FORM 요소

인라인 자식 요소를 가질 수 없는 블록 요소

action : 폼 처리기의 url 지정 (JSP url을 적어준다)

method폼 전송 시 사용되는 http 메서드 타입 지정. get, post

- get : 간단한 데이터를 빠르게 처리. 데이터 사이즈는 4096Byte.

- post : http 헤더 뒤에 입력 스트림 데이터로 전달. 같은 양인 경우 get보다 느리다.




2. INPUT

type : text, password, checkbox, radio, hidden, button, reset, submit

name : 해당 개체의 이름 javascript나 jsp에서 참조

size : 입력 창의 크기

maxlength : 최대 입력 글자 수

value : 해당 개체의 값

checked : checkbox나 radio button의 경우 체크 표시가 됨



1) 텍스트 필드 <input type=“text”>

- 한 줄짜리 입력 필드 생성

- 필드의 폭을 초과하는 입력 문자는 뒤쪽 텍스트만 화면에 표시



2) 전송 버튼 <input type=“submit”>

- 클릭하면 폼 데이터 셋 전체를 전송



예제)

- 다음과 같이 form 안에 검색어를 입력할 텍스트 필드와 전송 버튼 생성

- 네이버 사이트에서 검색엔진을 사용하기 위한 form 요소를 찾아 method와 action 값 찾아오기

- 찾아온 값들을 생성한 form 요소의 속성 값으로 입력하여 완성



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>보도 자료</title>

<style type="text/css">

@import url(http://fonts.googleapis.com/earlyaccess/nanumgothic.css);

body {

padding: 20px;

font-family: 'Nanum Gothic', serif; 

color: rgb(102, 102, 102);

font-style: normal;

font-size: 12px;

line-height: 20px;

}

</style>

</head>

<body>

 <h1>포털 사이트의 검색 엔진 이용</h1>

 <h2>네이버에서 검색하기</h2>

<form id="sform" name="sform" action="http://search.naver.com/search.naver" method="get">

검색어 입력 : 

<input id="query" name="query" type="text" title="검색어 입력" class="input_text" tabindex="1" accesskey="s" style="ime-mode:active;" autocomplete="off" onclick="document.getElementById('fbm').value=1;">

<button id="search_btn" type="submit" title="검색" tabindex="3" class="sch_smit" onmouseover="this.className='sch_smit over'" onmousedown="this.className='sch_smit down'" onmouseout="this.className='sch_smit'" onclick="clickcr(this,'sch.action','','',event);"><span class="ir">검색</span></button>

</body>

</html>



네이버에서 요소 검사(F12)를 통해 HTML 코드를 분석하고 input 바와 button을 가져와서 사용해보는 예제.




3) password <input type=“password”>

- 비밀번호 입력을 위한 한 줄짜리 입력 필드 생성

- 입력된 텍스트를 별표(*)나 점(.)을 사용하여 가려서 표시

- maxlength 속성으로 최대 입력 글자 제한 가능



4) checkbox <input type=“checkbox”>

- 하나 이상 선택이 가능한 경우를 위한 선택 토글

value 속성 값이 없을 경우 체크되면 “on”을 전달

checked 속성을 이용하여 초기 체크된 상태 지정 가능



5) radio <input type=“radio”>

- 한 세트에서 한가지 옵션만 선택할 때 사용

한 세트는 name 값을 동일하게 지정

value 속성을 반드시 사용



6) file <input type=“file”>

- <input type=“file”>로 파일 업로드 컨트롤 생성

- 선택된 파일은 텍스트 필드에 로컬 경로가 표시되고 폼이 전송될 때 서버에 업로드

- accept 속성을 이용하여 gif나 jpg 포맷만 업로드 가능하게 제한 가능.

- 이 경우 <form> 태그에도 accept 속성을 사용 해야 함





7) submit과 reset 

submit은 클릭하면 폼 데이터 셋 전체를 전송

reset은 폼 전체의 컨트롤을 초기값으로 설정

value 속성으로 버튼에 표시될 텍스트 설정





8) image  <input type=“image”>

- submit 버튼처럼 동작

버튼의 모양을 이미지로 사용 가능

이미지를 사용하므로 alt 속성 필요



9) 기타 타입들


<input type=“button”>

- 일반 버튼

- 클릭하여 클라이언트 측 스크립트를 호출하는 것이 일반적


<input type=“hidden”>

- 브라우저에 표시되지 않음

- 수정할 필요가 없는 추가 데이터를 폼의 다른 컨트롤과 함께 전송하기 위해 사





3. button

- 텍스트와 인라인 요소를 자식으로 가지는 인라인 요소

- submit, reset, button 세 가지의 타입을 가짐




4. select

- 적어도 하나 이상의 <option>을 자식으로 가지는 인라인 요소

size : 입력 창의 크기

multiple : 하나 이상의 아이템 선택 가능

name : 해당 개체의 이름 javascript나 jsp에서 참조


- 컨트롤의 폭은 목록에서 가장 긴 옵션에 의해 결정

-  multiple 속성 사용 시 Window에서는 <Shift>나 <Ctrl>키를, Mac에서는 Command 키를 이용하여 여러 개의 옵션 선택 가능



1) option

- 텍스트만을 자식으로 가짐

value 속성에 값이 지정되지 않으면 자식인 텍스트를 폼으로 전송




2) optgroup

- option 요소만 자식으로 가짐

select 요소 안에서 하나 이상의 option 요소를 관련된 카테고리로 묶을 수 있음



6. textarea

- 여러 줄짜리 텍스트 필드 생성

텍스트만 자식으로 가지고 컨트롤의 초기값으로 표시됨

박스의 크기는 텍스트의 크기에 따라 다르게 렌더링 됨

cols 속성으로 가로 한 줄에 들어가는 글자 수 지정

rows 속성으로 세로 방향으로 스크롤 없이 표시되는 텍스트 줄 수 지정


name : 해당 개체의 이름 javascript나 jsp에서 참조

cols : 입력란의 너비(칸 수)

rows : 입력란의 높이(즐 수)

wrap : physical 자동 줄바꿈 / off 줄바꿈을 하지 않는다.






7. FORM의 웹 접근성 요소


1) 시맨틱 구성

폼이 여러 부분으로 나뉠 때 <div>로 묶고 hn 요소를 이용하여 타이틀 지정

폼 안의 각 컨트롤이 별개의 개념이면 각각의 단락으로 묶음

체크 박스나 라디오 버튼은 목록 요소를 사용



2) fieldset

폼 컨트롤을 묶어 주는 중첩 가능한 블록 요소

논리적 그룹으로 묶어주는 관련 컨트롤 세트가 포함

legend 요소를 이용하여 필드 세트의 제목을 제공해야 함



3) legend

텍스트와 인라인 요소만을 자식으로 가지는 인라인 요소

field 요소 안에서 필드 셋의 텍스트 타이틀이나 캡션을 제공



4) label

인라인 요소

특정 컨트롤에 대한 텍스트 라벨 생성

컨트롤과의 명시적, 암묵적 연결 방법

라벨 영역을 클릭하여 컨트롤에 포커스를 줄 수 있음


label 연결 방법

명시적 : id와 for 속성을 이용하여 연결

암묵적 : 컨트롤을 label 요소 안에 입력




5) 필수 필드 표시

CSS가 아닌 XHTML 마크업 안에 표시

별표(*)나 작은 점, ‘필수 항목’ 명시

색상 사용시 붉은 색은 에러를 나타내므로 피함







Posted by netyhobby
,