Biểu mẫu

Biểu mẫu là phần tử cho phép người dùng cung cấp dữ liệu vào một trường hoặc nhóm trường. Biểu mẫu có thể đơn giản như một trường duy nhất hoặc phức tạp như một gồm nhiều trường trên mỗi trang, xác thực thông tin đầu vào và đôi khi là CAPTCHA.

Biểu mẫu được xem là một trong những phần khó nhất để có được ngay từ một khía cạnh hỗ trợ tiếp cận, vì chúng đòi hỏi kiến thức về tất cả các yếu tố mà chúng tôi đã đề cập, cũng như các quy tắc bổ sung dành riêng cho các biểu mẫu. Với một số người dùng và thời gian, bạn có thể tạo một biểu mẫu dễ tiếp cận phù hợp với bạn và người dùng.

Biểu mẫu là học phần cuối cùng dành riêng cho thành phần trong khoá học này. Mô-đun này sẽ tập trung vào các nguyên tắc dành riêng cho biểu mẫu, nhưng tất cả các nguyên tắc khác mà bạn đã tìm hiểu trong các học phần trước, chẳng hạn như cấu trúc nội dung, tiêu điểm bàn phímđộ tương phản màu, cũng áp dụng cho biểu mẫu phần tử.

Trường

Nền tảng của biểu mẫu là trường. Các trường là những mẫu tương tác nhỏ, chẳng hạn như phần tử đầu vào hoặc nút chọn, cho phép người dùng nhập nội dung hoặc tạo lựa chọn. Có nhiều trường biểu mẫu để lựa chọn.

Đề xuất mặc định là sử dụng các mẫu HTML đã thiết lập thay vì xây dựng một số tính năng tuỳ chỉnh bằng ARIA, chẳng hạn như một số tính năng và các chức năng (chẳng hạn như trạng thái của trường, thuộc tính và giá trị) về bản chất là tích hợp vào các phần tử HTML, nhưng bạn phải thêm ARIA tuỳ chỉnh theo cách thủ công.

ARIA

<div role="form" id="sundae-order-form">
  <!-- form content -->
</div>

HTML

<form id="sundae-order-form">
  <!-- form content -->
</form>

Ngoài việc chọn các mẫu trường biểu mẫu dễ tiếp cận nhất, trong đó có thể áp dụng, bạn cũng nên thêm Thuộc tính tự động hoàn thành HTML vào các trường của mình. Việc thêm các thuộc tính tự động hoàn thành giúp chi tiết hơn định nghĩa hoặc xác định mục đích đối với tác nhân người dùng và công nghệ hỗ trợ (AT).

Thuộc tính tự động hoàn thành cho phép người dùng cá nhân hoá bản trình bày trực quan, chẳng hạn như hiển thị biểu tượng chiếc bánh sinh nhật trong một trường có tính năng tự động hoàn thành ngày sinh nhật được gán cho thuộc tính đó (bday). Nhìn chung, các thuộc tính tự động hoàn thành giúp điền biểu mẫu dễ dàng và nhanh chóng hơn. Điều này đặc biệt hữu ích đối với những người những người mắc chứng rối loạn nhận thức và đọc hiểu cũng như những người sử dụng ATSH, chẳng hạn như màn hình độc giả.

<form id="sundae-order-form">
  <p>Name: <input type="name" autocomplete="name"></p>
  <p>Telephone: <input type="tel" autocomplete="tel"></p>
  <p>Email address: <input type="email" autocomplete="email"></p>
</form>

Cuối cùng, các trường biểu mẫu không được tạo ra thay đổi theo ngữ cảnh khi nhận được tâm điểm hoặc hoạt động đầu vào của người dùng trừ phi người dùng đã được cảnh báo về hành vi đó trước đó bằng cách sử dụng thành phần này. Ví dụ: Biểu mẫu không được gửi tự động khi một trường nhận được tiêu điểm hoặc sau khi người dùng thêm nội dung vào trường đó.

Nhãn

Nhãn thông báo cho người dùng về mục đích của một trường (nếu bắt buộc phải là trường này), cũng như có thể cung cấp thông tin về các yêu cầu của trường, chẳng hạn như thông tin đầu vào . Nhãn phải luôn hiển thị và mô tả chính xác biểu mẫu cho người dùng.

Một trong những nguyên lý nền tảng về hình thức dễ tiếp cận là thiết lập một nguyên tắc rõ ràng kết nối chính xác giữa trường và nhãn của trường đó. Điều này đúng cả về mặt hình ảnh theo phương thức lập trình. Nếu không có bối cảnh này, người dùng có thể không hiểu cách điền vào các trường trong biểu mẫu.

<form id="sundae-order-form">
  <p><label>Name (required): <input type="name" autocomplete="name" required></label></p>
  <p><label>Telephone (required): <input type="tel" autocomplete="tel" required></label></p>
  <p><label>Email address: <input type="email" autocomplete="email"></label></p>
</form>

Ngoài ra, các trường biểu mẫu có liên quan, chẳng hạn như địa chỉ gửi thư, cần phải được nhóm theo phương thức lập trình và trực quan. Một phương pháp là sử dụng nhóm trường/huyền thoại để nhóm các phần tử tương tự nhau.

Nội dung mô tả

Mô tả trường tương tự như nhãn ở chỗ chúng được dùng để cung cấp thêm bối cảnh cho trường và các yêu cầu. Nội dung mô tả trường không khớp cần thiết cho khả năng tiếp cận nếu nhãn hoặc hướng dẫn biểu mẫu mang tính mô tả đủ.

Tuy nhiên, có những trường hợp mà việc thêm thông tin bổ sung sẽ hữu ích để tránh lỗi biểu mẫu, chẳng hạn như chuyển tiếp thông tin về độ dài tối thiểu của thông tin đầu vào cho trường mật khẩu hoặc cho người dùng biết nên sử dụng định dạng lịch nào (chẳng hạn như dưới dạng MM-DD-YYYY).

Bạn có thể sử dụng nhiều phương pháp để thêm nội dung mô tả trường vào biểu mẫu. Một trong những phương pháp tốt nhất là thêm aria-mô tả cho phần tử biểu mẫu, ngoài phần tử <label>. Màn hình người đọc sẽ đọc cả nội dung mô tả và nhãn.

Nếu bạn thêm thuộc tính aria-gắn nhãn cho phần tử của bạn, thì giá trị thuộc tính sẽ ghi đè văn bản trong <label>. Như thường lệ, hãy nhớ kiểm thử mã cuối cùng với tất cả các AT mà bạn .

Lỗi

Khi tạo biểu mẫu dễ tiếp cận, có nhiều biện pháp để ngăn người dùng mắc lỗi biểu mẫu. Trong phần trước của học phần này, chúng tôi đã đề cập đến cách đánh dấu rõ ràng các trường, tạo nhãn nhận dạng và thêm mô tả chi tiết bất cứ khi nào nhất có thể. Nhưng cho dù bạn nghĩ biểu mẫu của mình rõ ràng đến mức nào thì cuối cùng, người dùng sẽ mắc lỗi.

Khi người dùng gặp lỗi biểu mẫu, bước đầu tiên là thông báo lỗi. Trường nơi xảy ra lỗi phải được xác định rõ ràng và lỗi phải được mô tả cho người dùng bằng văn bản.

Có nhiều phương pháp để hiển thị lỗi , chẳng hạn như:

  • Cửa sổ bật lên, cùng dòng gần nơi xảy ra lỗi
  • Tập hợp các lỗi được nhóm lại trong một thông báo lớn hơn ở đầu trang

Hãy nhớ chú ý đến tiêu điểm bàn phímtuỳ chọn khu vực trực tiếp của ARIA khi thông báo lỗi.

Bất cứ khi nào có thể, hãy đề xuất chi tiết cho người dùng về cách khắc phục . Có hai thuộc tính dùng để thông báo lỗi cho người dùng.

  • Bạn có thể sử dụng thuộc tính HTML bắt buộc. Trình duyệt sẽ đưa ra thông báo lỗi chung dựa trên thông số xác thực đã gửi.
  • Hoặc bạn có thể sử dụng thuộc tính aria-required để chia sẻ thông báo lỗi tuỳ chỉnh cho AT. Chỉ AT mới nhận được thông báo, trừ phi bạn thêm mã bổ sung để tất cả người dùng đều nhìn thấy thông báo.

Sau khi người dùng cho rằng tất cả lỗi đã được khắc phục, hãy cho phép họ gửi lại biểu mẫu và cung cấp phản hồi về kết quả gửi. Một lỗi thông báo cho người dùng biết họ cần thực hiện thêm nội dung cập nhật nào, trong khi một thông báo thành công xác nhận rằng họ đã khắc phục tất cả các lỗi và gửi biểu mẫu thành công.

Kiểm tra kiến thức

Kiểm tra kiến thức của bạn về các biểu mẫu có thể truy cập

Câu trả lời nào dưới đây là cách nhập biểu mẫu dễ tiếp cận nhất?

Email address: <input type="email" required>
Không có nhãn liên kết với 'Địa chỉ email' với đầu vào.
<label>Email address: <input type="email" required></label>
Đây là thuộc tính tự động hoàn thành. Thuộc tính này cung cấp định nghĩa hoặc thông tin nhận dạng mục đích cho tác nhân người dùng và công nghệ hỗ trợ (AT).
<label>Email address: <input type="email" required autocomplete="email"></label>
Đây là nhãn trường có thể truy cập, tuy nhiên, đây không phải là nhãn dễ truy cập nhất trong danh sách này.
<label>Email address (required): <input type="email" required aria-describedby="email-validation"> <span id="email-validation" class="validation-message">Please provide a valid email address using the format name@place.com</span></label>
Thuộc tính aria-describeby sẽ bổ sung ngữ cảnh cho một lỗi mà người dùng có thể gặp phải nếu trường này được điền không chính xác. Mặc dù thuộc tính này không bắt buộc nhưng thuộc tính này có thể hữu ích cho người dùng AT.