2013-02-13 38 views
8

Tôi hiện đang thêm một số dữ liệu nhập ngày vào biểu mẫu. Tôi có đầu vào 'Ngày bắt đầu' và 'Ngày kết thúc' nhưng chỉ muốn sử dụng một nhãn ('Ngày') cho cả hai đầu vào.Nhãn đơn cho hai đầu vào

Có thể thực hiện việc này không? Các vấn đề về khả năng tiếp cận là gì?

Suy nghĩ hiện tại của tôi là có nhãn 'Ngày' được hiển thị sau đó có hai nhãn ẩn cho mỗi đầu vào cho trình đọc màn hình, v.v. Đây có phải là cách để đi không? Có bất kỳ ví dụ nào về các trang web lớn đang thực hiện loại điều này (trang web của Chính phủ nếu có thể) không?

Đây là một dự án có thể do người dùng của cơ quan chính phủ sử dụng để có các quy tắc nghiêm ngặt về việc tuân thủ khả năng truy cập.

+0

Làm thế nào để bạn xác định 'sử dụng'? Bạn có nghĩa là nhấp vào nhãn nên tập trung cả hai trường (như với thuộc tính 'for')? – BenM

+0

Bạn cũng cần phải đặt thuộc tính cho phép công nghệ hỗ trợ thông báo cho người dùng về đầu vào chính xác, v.v. – AverageMarcus

Trả lời

6

Trong trường hợp này tôi nghĩ rằng đánh dấu tốt nhất sẽ được quấn đầu vào trong một fieldset, sử dụng một legend cho "Ngày", sử dụng labels cho cả inputs và ẩn các nhãn:

HTML

<fieldset> 
<legend>Dates</legend> 
<label for="startdate">Start Date</label> 
<input type="text" name="startdate" id="startdate" placeholder="Start Date"> 
<label for="enddate">End Date</label> 
<input type="text" name="enddate" id="enddate" placeholder="End Date"> 
</fieldset> 

CSS

fieldset { 
    border: none; 
} 
label { 
    margin-left: -999em; 
} 
input { 
    display: block; 
} 

Fiddle here

Xem thêm: WCAG 2, H71: Providing a description for groups of form controls using fieldset and legend elements

1

Vấn đề ở đây là bạn chỉ có thể chỉ định một for cho mỗi nhãn. Tôi sẽ tưởng tượng, cho các mục đích tiếp cận tốt nhất nên hiển thị hai labels một cho mỗi ngày. Bằng cách này, bất kỳ ai sử dụng trình đọc màn hình, v.v. sẽ nhận được nhãn hợp lệ cho mỗi đầu vào.

<label for="x">x name</label><input name="x"/> 
<label for="y">y name</label><input name="y"/> 
+0

Bạn có đề xuất sử dụng nhãn ẩn chỉ dành cho trình đọc màn hình không? – AverageMarcus

+0

không chắc chắn 100% các đề xuất trên nhãn ẩn. Tôi sẽ không ngạc nhiên nếu một số độc giả sẽ không đọc các giá trị ẩn, tôi cho rằng điều này sẽ phụ thuộc vào định nghĩa của bạn về ẩn cũng! – Liam

+3

Đây là phương pháp tiếp cận dễ tiếp cận nhất và tránh việc tạo ra vấn đề ngay từ đầu. Đó là khái niệm đơn giản và dễ hiểu, đó cũng là một tính năng trợ năng quan trọng. Những người có khó khăn về nhận thức cần phải có một mối liên hệ đơn giản và dễ hiểu giữa một văn bản giải thích đầu vào được mong đợi và một điều khiển cho đầu vào thực tế. Vì lý do này, nhãn sẽ * không * bị ẩn trong hiển thị trực quan. –

4

Tôi nghĩ đặt cược tốt nhất của bạn là bao gồm nhãn với mỗi đầu vào. Sau đó cho nhãn mà bạn không muốn thực sự hiển thị trên trang chỉ có thể được đặt ra trang sử dụng CSS qua

.hide { 
    position: absolute; 
    left: -9999em; 
} 

... hoặc một cái gì đó tương tự

+1

Chắc chắn 'Hiển thị: none' sẽ tốt hơn' vị trí: tuyệt đối'? – AverageMarcus

+4

Một số trình đọc màn hình bỏ qua các phần tử 'display: none'. – BenM

+0

Thật sao? Tin mới đối với tôi. bạn có bất kì ví dụ nào không? – AverageMarcus