입력 필드에 두 개의 레이블이있을 수 있습니까?


134

메리는 작은 형태를 가지고 있었고 그 분야는 그렇게 표시되어 있습니다.
오류가 발생할 때마다 혼란 스러울 것입니다.

각 입력 필드에 대한 레이블이 있습니다 ... 꽤 표준적인 문제입니다. 양식의 유효성을 검사 한 후 양식 상단에 누락되거나 잘못된 정보를 자세히 설명하는 유용한 작은 단락을 표시합니다.

동일한 입력 필드에 대해 두 개의 레이블을 가질 수 있습니까? 하나는 올바른 형식이고 다른 하나는 유효성 검사 알림 텍스트입니까? 내가 이것을해서는 안되는 이유가 있습니까?


무슨 일이 있었습니까? 작동하면 양식이나 페이지가 손상 될 것이라고 생각하지 않습니다. 사용하면 유효성 검사 오류를 클릭하고 올바른 필드에 초점을 맞출 수 있기 때문에 플러스를 얻을 수 있습니다.
Felipe Cypriano

나는 그것을 시도하지 않았지만 가능할 것이라고 생각합니다. 그러나 레이블은 필드가 무엇인지 정의하고 오류 메시지는 정의하지 않기 때문에 사용하지 않는 것이 좋습니다. 따라서 경고의 유효성을 검사하기 위해 레이블을 사용해서는 안됩니다.
귀도 헨드릭스

1
이것은 일반적인 UI 디자인 / 사용성 질문입니까?
jball

네. "작동"...하지만 이것이 나쁜 디자인 인 이유가 있습니까? 액세스 가능성으로 인해 추측 될 수 있지만 일반 사용자의 경우 오류 메시지를 클릭하고 엉망진창으로 가져 가면 상황이 더 쉬워 질 것입니다 ... 단지 알지 못합니다. "시각 장애가있는 독자"등을 엉망으로 만듭니다.
aslum

1
경우에 따라 컨트롤과 텍스트를 안에 넣는 것이 더 쉽습니다 label. forid속성을 생략 할 수도 있습니다 . 사양 이 암시 적 연결을 호출합니다.
rybo111

답변:


158

이 질문은 HTML 양식에 관한 것입니다. 로부터 사양 :

LABEL 요소는 정보를 컨트롤에 첨부하는 데 사용될 수 있습니다. 각 LABEL 요소는 정확히 하나의 양식 제어와 연관됩니다.

따라서 각 양식 컨트롤은 여러 레이블로 참조 될 수 있지만 각 레이블은 하나의 컨트롤 만 참조 할 수 있습니다. 따라서 컨트롤에 대한 두 번째 레이블을 갖는 것이 의미가 있다면 (그리고 설명하는 상황에서는) 두 번째 레이블을 자유롭게 추가하십시오.


2
실제로 HTML보다 유용성 / 접근성 질문에 더 가깝습니다. HTML이 작동합니다.
aslum

2
우리는 모두 유효한 코드 만 사용해야합니다. 그렇지 않으면 나중에 또는 다른 사람이나 JS 라이브러리 또는 기타 문제가 발생할 수 있습니다.
SHernandez

1
정답은 Rob입니다. 이 솔루션은 시각 장애인을 위해 작동하며 일부 화면 판독기에서는 실패합니다. Rob이 자신의 답변을 제출하기 전에 위의 jsummers의 답변을 수락 한 것 같습니다.
케이지

3
@AvramLavinsky 아니오, 이것은 "필드에 두 개의 레이블을 가질 수 있습니까?"에 대한 정답입니다. 사양은 매우 명확합니다. 고객이이를 해석하는 방법에 달려 있습니다. "aria-labeledby"로 연결되는 "aria-definedby"에 대한 링크는 깨진 화면 판독기를 "고정"하는 방법입니다.
James Sumners 2016 년

Funny MDN은 "하나의 입력은 여러 레이블과 연관 될 수 있습니다"라고 말합니다. developer.mozilla.org/en-US/docs/Web/HTML/Element/label
2540625

40

HTML은 합법적이며 작동합니다 (레이블을 클릭하면 해당 필드로 포커스가 이동 됨).

접근성 이유로 올바르게하는 것이 조금 까다 롭습니다.

"공통적 인"접근 방식이 아니며, 하나 이상의 공용 화면 판독기 (NVDA로 테스트 한)는 필드로 포커스를 이동할 때 첫 번째 레이블 만 읽습니다. 동일한 필드에 대한 추가 레이블은 무시합니다.

따라서 오류 메시지가 페이지 상단에있는 경우 필드를 탭하는 시각 장애인 또는 시력이 약한 사용자는 해당 필드에 착륙 할 때 옆에 "실제"레이블이 아닌 오류 메시지 만 들립니다.

따라서 오류 메시지를 올바르게 표현하면 좋은 결과가 될 수 있습니다 (유효하지 않은 필드를 빨간색으로 강조 표시하는 것보다 낫습니다).


1
이것은 정확하고 이것을 코딩하는 올바른 방법은 aria-
Descried

27

예, 동일한 양식 컨트롤에서 여러 레이블을 가리킬 수 있습니다. 이것은 완벽하게 합법적입니다 .

<label for="fname">First name</label>
<label for="fname">Enter your info</label>
<label for="fname">Why not a third label</label>
<input type="text" id="fname" name="fname">

이것은 단지 예일뿐입니다. 일반적으로이 줄들은 서로 가깝기 때문에 하나의 레이블로 묶습니다.


13
" 속성을 LABEL통해 여러 개의 참조를 작성하여 둘 이상의 동일한 제어와 연관 될 수 있습니다. "라는 문서에 대한 링크의 경우 +1입니다 for.
alexg
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.