AD JB Toolbox 01

HTML 강좌 / textarea, select, option, button 사용하기

긴 글을 입력받으려면 textarea, 준비된 선택지에서 하나를 고르게 하려면 select와 option, 명시적인 동작을 실행하려면 button을 사용합니다. 네 요소의 역할을 구분하면 입력값과 제출 동작을 예측하기 쉬워집니다.

textarea로 여러 줄 입력받기

textarea의 처음 표시할 값은 시작 태그와 종료 태그 사이에 씁니다. input처럼 value 속성에 긴 본문을 넣는 방식이 아닙니다.

<label for="message">문의 내용</label>
<textarea id="message" name="message" rows="5" cols="40"></textarea>

rows와 cols는 기본 표시 크기에 영향을 줍니다. 실제 화면 너비에 맞는 크기 조절은 CSS로 할 수 있습니다. 입력칸에 반드시 name을 주어야 제출할 때 내용이 전달됩니다.

시작 태그와 종료 태그 사이에 문장을 넣으면 처음부터 그 문장이 입력된 상태로 표시됩니다. 사용자가 아무것도 입력하지 않았다는 상태와 예시 문장을 구별해야 한다면, 기본값 대신 placeholder를 보조 힌트로 쓰되 레이블은 유지하세요. 긴 문의를 받는 양식에서는 한 줄짜리 input보다 여러 줄을 편집할 수 있는 textarea가 적합합니다.

select와 option으로 선택지 만들기

<label for="topic">문의 유형</label>
<select id="topic" name="topic">
  <option value="order">주문</option>
  <option value="delivery">배송</option>
  <option value="other">기타</option>
</select>

화면에는 ‘주문’이 보이지만 제출되는 값은 order입니다. id="topic"은 레이블과 연결하고, name="topic"은 제출 데이터의 이름으로 사용합니다. 선택지의 value는 서버가 처리할 값과 일치하게 정하세요.

이 예제에서는 아무 조작 없이 제출해도 첫 번째 항목인 ‘주문’이 선택됩니다. 사용자에게 의도를 확인받아야 하는 양식이라면 <option value="">선택하세요</option>를 맨 앞에 놓고 select에 required를 지정하세요. 반대로 합리적인 기본값이 있는 설정이라면 첫 항목을 그대로 두는 편이 편할 수 있습니다. 서버는 화면 문구가 아닌 value를 기준으로 처리합니다.

button의 type을 명시하기

양식 안에서 button의 기본 유형은 제출입니다. 버튼을 단순한 사용자 인터페이스 동작에만 쓰려면 type="button"을 적어 의도치 않은 제출을 막으세요.

<form action="" method="get">
  <label for="note">메모</label>
  <textarea id="note" name="note" rows="4"></textarea>
  <button type="submit">전송</button>
  <button type="reset">입력값 초기화</button>
</form>

이 예제는 현재 주소로 GET 요청을 보내므로 별도 서버 기능 없이도 제출 후 주소의 쿼리 문자열을 관찰할 수 있습니다. 초기화 버튼은 사용자가 입력한 내용을 지울 수 있어 실제 서비스에서는 꼭 필요한지 판단한 뒤 사용하세요. 각 요소의 세부 속성은 MDN HTML 요소 참고 문서에서 확인할 수 있습니다.

초기화는 항상 빈칸으로 만드는 기능이 아니라 양식의 초기값으로 되돌리는 기능입니다. 예를 들어 textarea에 기본 문장을 넣었다면 초기화 후 그 문장이 다시 나타납니다. 실수로 눌렀을 때 작성 내용이 사라질 수 있으므로, 실제 서비스에서는 버튼의 필요성과 위치를 신중하게 정하세요.

type="button"은 양식을 제출하지 않는 버튼을 만들지만, 별도의 스크립트를 연결하지 않으면 눌러도 동작하지 않습니다. 제출·초기화처럼 HTML만으로 정해지는 동작과 스크립트가 필요한 동작을 구분해 사용하세요.

같은 카테고리의 다른 글
HTML 강좌 / HTML 접근성 기본: 제목·링크·이미지·키보드

HTML 강좌 / HTML 접근성 기본: 제목·링크·이미지·키보드

제목 구조, 의미 있는 링크 문구, 이미지 대체 텍스트와 키보드 조작을 점검하는 HTML 접근성의 기본을 정리합니다.

HTML 강좌 / div와 span은 언제 사용할까?

HTML 강좌 / div와 span은 언제 사용할까?

div와 span의 차이와 사용 기준을 설명하고, 의미 요소가 없는 경우에만 묶음 요소를 쓰는 예제를 보여 줍니다.

HTML 강좌 / form의 구조와 GET·POST 제출 방식

HTML 강좌 / form의 구조와 GET·POST 제출 방식

form, action, method, name의 역할을 이해하고 GET과 POST 방식으로 양식 값이 전달되는 차이를 설명합니다.

HTML / Tutorial / 연속된 공백 넣는 방법

HTML / Tutorial / 연속된 공백 넣는 방법

HTML에서 연속된 공백은 하나의 공백으로 처리합니다. 소스 코드에서 여러 칸을 띄어써도 브라우저에서는 한 칸을 띄어쓴 것으로 표현됩니다. 연속된 공백을 넣고 싶다면 특수 문자  를 사용합니다.

HTML 강좌 / fieldset, legend, autocomplete로 양식 설명하기

HTML 강좌 / fieldset, legend, autocomplete로 양식 설명하기

fieldset과 legend로 관련 입력을 묶고, autocomplete 토큰으로 필드의 입력 목적을 알리는 방법을 설명합니다.

HTML 강좌 / figure와 figcaption으로 그림과 설명 묶기

HTML 강좌 / figure와 figcaption으로 그림과 설명 묶기

figure와 figcaption으로 이미지와 설명을 묶고, alt와 캡션의 역할을 구분하는 방법을 예제로 설명합니다.

HTML 강좌 / 이미지 넣기: img, alt, 크기

HTML 강좌 / 이미지 넣기: img, alt, 크기

HTML img 요소로 이미지를 넣고 alt 대체 텍스트와 width·height를 설정하는 방법을 설명합니다. 실제 예제 이미지로 경로와 크기 문제도 확인할 수 있습니다.

HTML 강좌 / details와 summary로 펼침 콘텐츠 만들기

HTML 강좌 / details와 summary로 펼침 콘텐츠 만들기

details와 summary로 클릭하거나 키보드로 펼치는 콘텐츠를 만들고 open 속성과 사용 시 주의점을 설명합니다.

HTML 강좌 / HTML의 개념과 웹페이지에서 하는 역할

HTML 강좌 / HTML의 개념과 웹페이지에서 하는 역할

HTML은 웹페이지의 콘텐츠에 구조와 의미를 부여합니다. HTML·CSS·JavaScript의 역할을 비교하고, 간단한 코드가 브라우저에 표시되는 과정과 첫 HTML 파일을 만드는 방법을 알아봅니다.

HTML 강좌 / label과 input으로 입력 필드 만들기

HTML 강좌 / label과 input으로 입력 필드 만들기

label의 for와 input의 id를 연결하는 방법, name의 제출 역할, placeholder가 레이블을 대신할 수 없는 이유를 설명합니다.