2010-02-13 12 views
31

Một số lượng lớn các trang web (tôi có thể nói nhiều nhất?) Không làm cho các nhãn có thể nhấp cho hộp kiểm và đầu vào radio của chúng. Nó có vẻ là một khả năng sử dụng rất lớn cho nỗ lực rất ít. Có bất kỳ vấn đề về khả năng tương thích/chức năng/khả năng sử dụng nào với việc sử dụng <label> có thể ngăn cản các nhà phát triển sử dụng thẻ này không?Làm cho hộp kiểm và nhãn radio có thể nhấp được

Edit: Thậm chí StackOverflow dường như phạm tội này, ví dụ, khi hỏi một câu hỏi, các Thông báo hàng ngày của bất kỳ câu trả lời mới nhãn hộp kiểm là không nhấp được.

+0

Nếu tôi nhớ không lầm, '

+0

Tôi đã biết về nó một thời gian nhưng từ bây giờ tôi sẽ sử dụng nó nhiều hơn nữa. – AndrewB

Trả lời

28

Không có lý do nào khác ngoài sự lười biếng. <label> s rất cần thiết cho khả năng truy cập và cũng rất tiện dụng cho những người có mục tiêu kém với số lần nhấp chuột của chúng tôi :)

+9

Heh, hãy nói với Jeff Atwood, xem chỉnh sửa của tôi ở trên. – RedFilter

+1

oops - mặc dù các hộp kiểm trên trang tùy chọn tiểu sử có nhãn – Ray

+1

Vâng, nó không nhất quán trên toàn bộ trang web. – RedFilter

1

<label> là thẻ HTML thuần túy, không yêu cầu JavaScript. Tôi cho rằng tất cả trình duyệt (chính) hỗ trợ thẻ này, vì nó rất dễ thực hiện.

Rất nhiều các nhà phát triển không sử dụng nó vì:

  • nó đòi hỏi nỗ lực nhiều hơn (thêm tất cả các thẻ ở khắp mọi nơi)
  • họ không biết về nó tồn tại
  • họ không nghĩ rằng đó là tiện lợi?!

Nhưng không có lý do gì để không sử dụng thẻ. Trừ khi bạn là rất bị giới hạn với băng thông của mình, có thể?

+0

Tôi nghĩ rằng nhận xét băng thông sẽ chỉ áp dụng cho một số trang web phổ biến nhất, ví dụ: Google. – alex

+0

Tôi hoàn toàn đồng ý, nhưng đây là lý do duy nhất tôi có thể nghĩ tại sao người ta không sử dụng thẻ '

+0

@ ngoại tuyến: đó là sự thật, Google không sử dụng thẻ '

7

Không, không có vấn đề gì với điều đó, nhưng tiếc là đây là một trong số most ignored html tags. Đồng ý, thẻ này là cực kỳ quan trọng vì lý do khả năng truy cập và những gì là nhiều hơn khi nói đến bố trí cho các thiết bị nhỏ như điện thoại di động, bạn không thể sống mà không có điều này.

+1

+1 cho tầm quan trọng của thiết bị di động. Và liên kết tốt đẹp, cảm ơn. Nếu bạn truy cập trang đăng ký của họ, bạn sẽ nhận thấy họ không sử dụng các thẻ '

+0

@OrbMan: đó là lý do tại sao tôi đưa ra +1 cho câu hỏi tuyệt vời bạn đã hỏi và đoán những gì mặc dù tôi đã trả lời nó, bản thân tôi không bao giờ quan tâm đến nó. :) – Sarfraz

+0

Cũng giống như thứ tự tab thích hợp (hoặc thậm chí khả năng tab ở tất cả), phím nóng và khả năng chung để làm việc với bàn phím chậm nhưng chắc chắn biến mất khỏi phần mềm ... –

3

Khó khăn duy nhất tôi có thể nghĩ là các điều khiển biểu mẫu của bạn cần phải có thuộc tính ID và thuộc tính ID cần phải là duy nhất trong trang của bạn.

Nếu bạn tạo các trường biểu mẫu theo lập trình, bạn sẽ phải tạo một ID duy nhất cho từng trường trong mỗi trang mà chúng xuất hiện. Điều này có thể hình dung là một vấn đề.

Nhưng nói chung, vâng, tôi nghĩ chỉ là những người lập trình không có nó trong đầu.

Trong ASP.NET WebForms (hoặc bất kỳ tên nào được gọi là), bạn muốn thuộc tính AssociatedControlID trên phần tử <asp:Label>.

+0

+1 để khám phá các rào cản để thực hiện – RedFilter

+1

Biểu mẫu kiểm soát không cần ID:

+1

Tôi nghĩ rằng tôi đã thấy các trình duyệt sẽ không triển khai trường biểu mẫu chọn nhãn để chọn mà không có thuộc tính 'id'. Và đôi khi, vì lý do bố cục, bạn không muốn trường biểu mẫu của mình nằm trong thẻ '

3

Và đây là demonstration cho những người đang tìm cách thực hiện.

Có một cách để kết nối các văn bản gần một yếu tố hình thức với các yếu tố bản thân, do đó, hoặc ai có thể được bấm để kích hoạt điều khiển:

những gì bạn muốn với đồ uống của bạn?

<label for="ice1"><input type="checkbox" name="withice" id="ice1">ice</label> 
<label for="ice2"><input type="checkbox" name="withlid" id="ice2">plastic lid</label> 
<label for="ice3"><input type="checkbox" name="withstraw" id="ice3">straw</label> 
+0

Liên kết của bạn bị hỏng. – Sildoreth

+2

bạn không cần và id nếu bạn bọc thẻ đầu vào vào nhãn –