Một trường đầu vào có thể có hai nhãn?


134

Mary có một hình thức nhỏ, và các lĩnh vực của nó được dán nhãn như vậy.
Bất cứ khi nào một lỗi len lỏi vào, nhầm lẫn nó sẽ gieo.

Tôi đã có một nhãn cho từng trường đầu vào ... chuyện khá chuẩn. Sau khi xác thực biểu mẫu, tôi đang hiển thị một đoạn nhỏ hữu ích ở đầu biểu mẫu nêu chi tiết thông tin nào bị thiếu hoặc không chính xác.

Tôi có thể có hai nhãn cho cùng một trường đầu vào không? Một trong các hình thức thích hợp, và một trong văn bản nhắc nhở xác nhận? Có bất kỳ lý do tôi không nên làm điều này?


Bạn đã thử những gì xảy ra? Nếu nó hoạt động tôi không tin rằng nó sẽ gây ra bất kỳ thiệt hại nào cho biểu mẫu của bạn cũng như trang. Và bạn sẽ nhận được điểm cộng vì việc sử dụng sẽ có thể nhấp vào lỗi xác thực và tập trung vào trường chính xác.
Felipe Cypriano

Tôi đã không thử nó, nhưng tôi đoán nó sẽ có thể. Nhưng tôi không khuyên bạn nên sử dụng nó, bởi vì một nhãn xác định trường này dùng để làm gì, một thông báo lỗi thì không. Vì vậy, tôi không nên sử dụng nhãn để cảnh báo xác nhận.
Guido Hendriks

1
Đây có phải là một câu hỏi thiết kế / khả năng sử dụng UI chung?
bóng

Vâng. Nó "hoạt động" ... nhưng có một số lý do đây là thiết kế xấu? Tôi đoán nó có thể là vì lý do truy cập, nhưng đối với một người dùng bình thường, tôi nghĩ rằng việc có thể nhấp vào thông báo lỗi và được đưa đến trường bị rối sẽ giúp mọi việc dễ dàng hơn ... Tôi chỉ không biết liệu nó có làm được không làm rối tung "độc giả cho người khiếm thị" hoặc tương tự.
vào

1
Trong một số trường hợp, việc đặt điều khiển và văn bản của bạn vào bên trong sẽ dễ dàng hơn label. Bạn thậm chí có thể bỏ qua các thuộc tính forid. Các đặc điểm kỹ thuật gọi đây là hiệp hội ngầm.
rybo111

Câu trả lời:


158

Tôi giả sử câu hỏi này là về các hình thức HTML. Từ đặc điểm kỹ thuật :

Phần tử LABEL có thể được sử dụng để đính kèm thông tin vào các điều khiển. Mỗi phần tử LABEL được liên kết với chính xác một điều khiển biểu mẫu.

Do đó, mỗi điều khiển biểu mẫu có thể được tham chiếu bởi nhiều nhãn, nhưng mỗi nhãn chỉ có thể tham chiếu một điều khiển. Vì vậy, nếu có ý nghĩa để có nhãn thứ hai cho điều khiển (và trong tình huống bạn mô tả, thì có) hãy thoải mái thêm nhãn thứ hai.


2
Đó thực sự là một câu hỏi về khả năng sử dụng / khả năng truy cập sau đó là HTML. Các html hoạt động.
vào

2
Tất cả chúng ta chỉ nên sử dụng mã hợp lệ, nếu không mọi thứ có thể bị hỏng trong tương lai hoặc cho người khác hoặc với một số thư viện JS hoặc bất cứ điều gì.
SHernandez

1
Câu trả lời đúng là của Rob. Giải pháp này hoạt động cho người dùng nhìn thấy và thất bại trong một số trình đọc màn hình. Aslum, đoán bạn đã chấp nhận câu trả lời của jsummers ở trên trước khi Rob gửi câu trả lời của anh ấy.
lồng rattler

3
@AvramLavinsky không, đây là câu trả lời đúng cho "một trường có thể có hai nhãn không?" Thông số kỹ thuật khá rõ ràng. Làm thế nào khách hàng chọn để giải thích đó là tùy thuộc vào họ. Liên kết của bạn đến "aria-mô tả", liên kết đến "aria-nhãnby", là cách để "sửa chữa" trình đọc màn hình bị hỏng.
James Sumners

MDN hài hước nói rằng "Một đầu vào có thể được liên kết với nhiều nhãn." developer.mozilla.org/en-US/docs/Web/HTML/Euity/label
2540625

40

HTML là hợp pháp và nó hoạt động (nhấp vào bất kỳ nhãn nào sẽ chuyển trọng tâm đến trường được đề cập).

Đó là một chút khó khăn hơn để làm đúng vì lý do tiếp cận.

Đây không phải là cách tiếp cận "phổ biến" và do đó, ít nhất một trình đọc màn hình chung (tôi đã thử nghiệm với NVDA) chỉ đọc nhãn đầu tiên khi bạn chuyển trọng tâm vào trường - nó bỏ qua mọi nhãn bổ sung cho cùng một trường.

Vì vậy, nếu thông báo lỗi của bạn ở đầu trang, người dùng bị mù hoặc nhìn kém nhìn qua các trường sẽ chỉ nghe thấy thông báo lỗi khi hạ cánh trên trường được đề cập, không phải là nhãn "thực" bên cạnh nó.

Do đó - nếu bạn phát âm đúng thông báo lỗi, đó có thể là một điều tốt (chắc chắn tốt hơn là chỉ làm nổi bật trường không xác thực bằng màu đỏ!).


1
Điều này là chính xác, và cách chính xác để mã hóa điều này là thông qua thuộc tính aria-mô tả
rattler lồng

27

Có, bạn có thể có nhiều nhãn điểm ở cùng một điều khiển biểu mẫu. Điều này là hoàn toàn hợp pháp :

<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">

Đây chỉ là một ví dụ ... thông thường bạn sẽ bọc những dòng này bằng một nhãn kể từ khi chúng đóng.


13
+1 cho liên kết đến tài liệu trong đó ghi rõ rằng "Nhiều hơn một LABELcó thể được liên kết với cùng một điều khiển bằng cách tạo nhiều tham chiếu thông qua forthuộc tính."
alexg
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.