입력 양식은 사용자로 부터 입력을 받는 양식이다.
웹브라우저가 탄생하고 의미있는 온라인의 연결은 이 입력양식의 전송에서 이루어졌다고 봐도 과언은 아니다.
회원가입, 로그인, 게시판의 글쓰기, SNS의 댓글 쓰기, 이메일 쓰기 등 이미 우리 생활에는 깊숙히 침투해있다. 그게 언제부터 있었는지 기억조차 나지 않는다.
라떼는 소리가 나온다.
모바일이 등장하고 약간의 UI가 달라졌지만 여전히 흰색 양식에 뭔가를 입력해야 한다는 사실은 변함이 없는 것 같다.
입력 양식을 본격적으로 사용하는 것은 서버와 DB 프로그래밍을 해야한다. 이 포스팅은 밖으로 보여주는 부분인 HTML에 관련된 내용이다. 서버 프로그래밍은 차후에 다루도록 하겠다.
입력 양식 태그는 아래와 같다.
<body>
<h1>Form Test</h1>
<form method="GET">
<input type="text" name="search"/>
<input type="submit"/>
</form>
</body>
그러고 보니 인터넷 익스플로러 부터 Form 이란 단어는 약간 MS 의 단어인 것 같다. 어쨋든 form 이라는 단어를 쓰는 것은 목적이 어떤 양식에 맞춰서 내용을 채운다는 말이다. 비슷한 기능을 다른 GUI 프레임워크에서는 컴포넌트라고 한다. form은 인터넷 브라우저에서 쓰는 것으로 이해하면 좋을 듯 하다.
input tag type 속성값에 따라 form의 형태가 결정된다. form의 method GET 방식은 주소에 요청을 실어서 보내는 방식이다. 방식은 POST 와 GET이 있는데 서버 프로그래밍에서 다룬다. 브라우저에서 보이는 HTML의 Form은 동일하지만 서버사이드의 언어는 다를 수가 있다. Node.js 인지 Java Spring 인지 다른 경우가 생긴다. get과 post를 처리하는 방법은 그 특정 서버프로그래밍에서 다루게 될 문제다.
바꿔말하면 HTML에서 한번 알고 있으면 공통이니까 다시 돌아와서 볼 필요가 없다. HTML의 두 전송 방식은 수십년간 안바뀐 것으로 알고있다.
이 포스트에서는 외형적인 부분을 다룬다.
type 속성값의 종류는 아래와 같다.
type value | description |
text | 텍스트 입력 필드 |
password | 패스워드 입력 필드 |
이메일 입력 | |
tel | 전화번호 양식 |
submit | 제출버튼 |
reset | 초기화한다 |
button | 그냥 버튼 |
hidden | 숨김 |
checkbox | 체크박스 |
radio | 라디오 버튼 |
image | 이미지 버튼 |
color | 색상 선택 |
number | 숫자값 |
range | 범위 조절(볼륨 같은) |
url | 인터넷 주소 |
date | 날짜선택 |
time | 시간선택 |
month | 월선택 |
<body>
<label>Form Test</label>
<form action="#" method="GET">
사용자 ID <input type="text" name="user" required><br/>
패스워드<input type="password" name="pass"/><br/>
이메일 <input type="email" placeholder="address@email.com"><br/>
전화번호<input type="tel" name="phone" pattern="[0-9]{3}-[0-9]{4}-[0-9]{4}" required placeholder="010-1234-1234" size="13"><br/>
<input type="submit" value="가입하기" />
<input type="reset" value="초기화" /><br/>
<input type="button" value="버튼" /><br/><br/>
<input type="hidden" value="숨김" /><br/>
<input type="checkbox" name="checkboxtest" value="1" />체크박스1<br/>
<input type="checkbox" name="checkboxtest" value="2" />체크박스2<br/>
<input type="checkbox" name="checkboxtest" value="3" />체크박스3<br/>
<input type="radio" name="radiotest" value="1" />라디오 버튼 1<br/>
<input type="radio" name="radiotest" value="2" />라디오 버튼 2<br/>
<input type="radio" name="radiotest1" value="3" />라디오 버튼 3<br/>
</br>
<input type="image" src="weave.jpg" name="bird" width="100" alt="이미지 버튼1" />
<input type="image" src="cat.jpg" name="cat" width="100" alt="이미지 버튼2" />
<input type="image" src="dolphin.jpg" name="dolphin" width="100" alt="이미지 버튼3" />
<br/>
<input type="color" /><br/>
<input type="number" value=1 /></br>
<input type="range" id ="volume" min="0" max="100" value="50" step="10" />volume</br>
<input type="url" placeholder="https://www.google.co.kr/" pattern="http://.*" size="30" required></br>
<input type="date" min="2020-07-01" value="2020-08-22"></br>
<input type="time" min="09:00" max="18:00" required value="10:00"></br>
<input type="month" min="2020-07" value="2020-08"></br>
</form>
</body>
HTML5에 들어와서 상당히 혁신적으로 바뀌었다.
당연하지만 이 속성들을 다 외울 필요는 없다. 웹문서와 IDE의 자동완성기능을 사용한다. VSC(비주얼 스튜디오 코드)의 자동 리스트 선택 기능에서 아래처럼 선택가능하다.
Web개발의 기본적인 Documentation 은 MDN Web Docs 를 추천한다. 15년의 역사로 신뢰할 수 있는 내용과 한글어 번역이 된 페이지도 많다.
*Input 입력요소 상세
15주년을 맞은 MDN Web Docs
https://hacks.mozilla.org/2020/07/mdn-web-docs-15-years-young/