AD JB Toolbox 01

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

관련된 입력 항목은 fieldset으로 묶고 legend로 그룹의 질문을 설명합니다. 개인 정보처럼 브라우저가 이미 알고 있을 수 있는 값에는 알맞은 autocomplete 토큰을 지정하면 입력을 돕는 환경을 제공할 수 있습니다.

fieldset과 legend로 질문 묶기

라디오 버튼 여러 개에 각각 레이블이 있어도 ‘무엇을 고르는지’는 별도로 설명해야 합니다. legend가 그 그룹의 이름을 제공합니다.

<fieldset>
  <legend>연락받을 방법</legend>
  <label><input type="radio" name="contact" value="email"> 이메일</label>
  <label><input type="radio" name="contact" value="phone"> 전화</label>
</fieldset>

브라우저에서 이 예제를 열면 기본 테두리와 제목이 보일 수 있습니다. 그 모양은 CSS로 바꿀 수 있지만, 그룹과 질문의 관계는 HTML에 남습니다. 한 그룹 안의 라디오 버튼은 같은 name을 사용해야 한 번에 하나만 선택됩니다.

각 항목의 레이블은 ‘이메일’, ‘전화’처럼 선택지 자체를 설명하고, legend는 ‘연락받을 방법’이라는 공통 질문을 설명합니다. 둘 중 하나만 있으면 사용자가 선택지를 어떤 질문에 대한 답으로 고르는지 놓치기 쉽습니다. 그룹이 여러 개라면 질문마다 별도의 fieldset을 만들어 의미를 분리하세요.

autocomplete로 입력 목적 알리기

<form action="/contact" method="post">
  <fieldset>
    <legend>연락처</legend>
    <label for="full-name">이름</label>
    <input id="full-name" name="full_name" autocomplete="name">
    <label for="email">이메일</label>
    <input id="email" name="email" type="email" autocomplete="email">
  </fieldset>
  <button type="submit">보내기</button>
</form>

autocomplete="name"과 autocomplete="email"은 각각 필드의 목적을 설명합니다. 자동 완성 목록이 실제로 나타나는지는 브라우저 설정과 저장된 정보 등에 따라 달라집니다. /contact는 처리 서버가 있어야 동작하는 예시 주소입니다.

autocomplete는 값을 미리 고정하거나 사용자 대신 제출하지 않습니다. 브라우저가 적절한 저장 정보를 제안할 수 있도록 필드의 의미를 알려 주는 힌트입니다. 필드의 name은 서버가 받는 키이고, autocomplete 토큰은 입력 목적이라는 점도 구별하세요. 개인정보를 다루는 양식에서는 사이트의 보안·개인정보 정책과 실제 저장 방식을 함께 검토해야 합니다.

그룹과 자동 완성을 점검하기

서로 다른 질문을 하나의 fieldset에 과도하게 묶지 마세요. 반대로 하나의 질문에 속한 라디오 버튼은 그룹 이름 없이 흩어 놓지 않는 것이 좋습니다. autocomplete에는 임의의 단어가 아니라 해당 입력 목적에 맞는 정의된 토큰을 사용하세요. 브라우저 자동 완성만 믿고 사용자의 입력값을 검증하지 않는 것도 피해야 합니다.

세부 속성과 허용 토큰은 MDN autocomplete 속성 문서와 MDN fieldset 요소 문서를 참고하세요.

실제로 확인하려면 서로 다른 두 질문을 한 양식에 만들어 보세요. 첫 질문의 라디오 버튼을 선택한 뒤 두 번째 질문을 선택했을 때 첫 선택이 풀린다면, 두 그룹에 같은 name을 사용했을 가능성이 있습니다. 같은 그룹 안에서는 이름을 같게, 독립된 그룹 사이에서는 다르게 지정해야 합니다.

같은 카테고리의 다른 글
HTML 강좌 / details와 summary로 펼침 콘텐츠 만들기

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

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

HTML 강좌 / HTML 문서의 기본 구조

HTML 강좌 / HTML 문서의 기본 구조

HTML 문서를 이루는 doctype, html, head, body의 역할과 기본 작성 순서를 예제로 설명합니다. 문서 정보와 페이지 본문을 구분하고 첫 HTML 파일을 직접 만들어 볼 수 있습니다.

HTML 강좌 / input 유형 선택하기: 이메일·숫자·날짜·체크박스·라디오

HTML 강좌 / input 유형 선택하기: 이메일·숫자·날짜·체크박스·라디오

입력 목적에 맞는 input type을 고르고 체크박스와 라디오 버튼의 선택·제출 동작을 구분하는 방법을 설명합니다.

HTML 강좌 / 링크(link)

HTML 강좌 / 링크(link)

HTML 링크의 href에 절대경로와 상대경로를 쓰고, 문서 내부 이동·이메일·새 탭·다운로드 링크를 만드는 방법을 예제로 설명합니다.

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

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

여러 줄 입력, 선택 목록, 양식 버튼을 만드는 요소의 역할과 값이 제출되는 방식을 예제로 설명합니다.

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

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

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

HTML 강좌 / 반응형 이미지: srcset, sizes, picture

HTML 강좌 / 반응형 이미지: srcset, sizes, picture

HTML의 srcset과 sizes로 화면에 맞는 이미지 파일을 선택하고, picture로 좁은 화면의 이미지 구도를 바꾸는 방법을 실제 파일 예제로 설명합니다.

HTML 강좌 / 여러 페이지로 된 작은 사이트 만들기

HTML 강좌 / 여러 페이지로 된 작은 사이트 만들기

홈·소개·문의 페이지를 연결하는 작은 사이트를 만들고 메뉴, 양식, 키보드 조작과 문서 오류를 점검하는 종합 실습입니다.

HTML 강좌 / audio, video, iframe으로 미디어와 외부 콘텐츠 삽입하기

HTML 강좌 / audio, video, iframe으로 미디어와 외부 콘텐츠 삽입하기

오디오·비디오 파일과 외부 콘텐츠를 HTML에 삽입할 때 필요한 기본 코드, 자막, 파일 경로, 접근성 확인 사항을 설명합니다.

HTML / Tutorial / 양식에 안내 문구 추가하는 방법

HTML / Tutorial / 양식에 안내 문구 추가하는 방법

HTML 양식에서 label, placeholder, value의 역할을 구분하고 안내 문구를 넣는 방법을 설명합니다. input·textarea 예제와 필수 입력 검사, 빈 값의 제출 동작을 함께 확인할 수 있습니다.