Lớp học lập trình về các phương pháp hay nhất về biểu mẫu đăng ký

Lớp học lập trình này cho bạn biết cách tạo một biểu mẫu đăng ký an toàn, dễ truy cập và dễ sử dụng.

Bước 1: Sử dụng HTML có ý nghĩa

Trong bước này, bạn sẽ tìm hiểu cách sử dụng các thành phần biểu mẫu để tận dụng tối đa các tính năng tích hợp sẵn của trình duyệt.

  • Nhấp vào Phối lại để chỉnh sửa để có thể chỉnh sửa dự án.

Hãy xem HTML cho biểu mẫu của bạn trong index.html. Bạn sẽ thấy các mục nhập tên, địa chỉ email và mật khẩu. Mỗi phần nằm trong một phần và mỗi phần được gắn nhãn. Nút Đăng ký là... <button>! Trong phần sau của lớp học lập trình này, bạn sẽ tìm hiểu về sức mạnh đặc biệt của tất cả các phần tử này.

<form action="#" method="post">
        
  <h1>Sign up</h1>
  
  <section>
    <label>Full name</label>
    <input>
  </section>
  
  <section>
    <label>Email</label>
    <input>
  </section>
  
  <section>
    <label>Password</label>
    <input>
  </section>
  
  <button id="sign-up">Sign up</button>
  
</form>

Nhấp vào Xem ứng dụng để xem trước biểu mẫu đăng ký của bạn. Cột này cho bạn thấy một biểu mẫu sẽ trông như thế nào khi không có CSS nào khác ngoài CSS kiểu trình duyệt mặc định.

  • Các kiểu mặc định có trông ổn không? Bạn muốn thay đổi điều gì để biểu mẫu này trông đẹp hơn?
  • Các kiểu mặc định có hoạt động không? Bạn có thể gặp phải vấn đề gì khi sử dụng biểu mẫu hiện tại? Mục tiêu trên thiết bị di động? Còn đối với trình đọc màn hình hoặc các công nghệ hỗ trợ khác thì sao?
  • Người dùng của bạn là ai và bạn đang nhắm mục tiêu đến những thiết bị và trình duyệt nào?

Kiểm tra biểu mẫu

Bạn có thể mua nhiều phần cứng và thiết lập một phòng thí nghiệm thiết bị, nhưng có cách rẻ hơn và đơn giản hơn để dùng thử biểu mẫu của bạn trên nhiều trình duyệt, nền tảng và thiết bị:

Nhấp vào Xem ứng dụng để xem trước biểu mẫu đăng ký của bạn.

  • Hãy dùng thử biểu mẫu của bạn trên các thiết bị khác nhau bằng Chế độ thiết bị trong Công cụ của Chrome cho nhà phát triển.
  • Bây giờ, hãy mở biểu mẫu trên điện thoại hoặc các thiết bị thực khác. Bạn nhận thấy những điểm khác biệt nào?

Bước 2: Thêm CSS để làm cho biểu mẫu hoạt động tốt hơn

Nhấp vào Xem nguồn để quay lại mã nguồn của bạn.

Cho đến thời điểm này, HTML không có gì sai, nhưng bạn cần đảm bảo biểu mẫu của mình hoạt động tốt người dùng trên thiết bị di động và máy tính.

Ở bước này, bạn sẽ thêm CSS để giúp biểu mẫu này dễ sử dụng hơn.

Sao chép và dán tất cả CSS sau vào tệp css/main.css:

Nhấp vào Xem ứng dụng để xem biểu mẫu đăng ký theo kiểu của bạn. Sau đó, nhấp vào Xem nguồn để quay lại css/main.css.

  • CSS này có hoạt động cho nhiều trình duyệt và kích thước màn hình khác nhau không?

  • Hãy thử điều chỉnh padding, marginfont-size cho phù hợp với thiết bị thử nghiệm của bạn.

  • CSS ưu tiên thiết bị di động. Truy vấn về nội dung nghe nhìn được dùng để áp dụng các quy tắc CSS cho khung nhìn có chiều rộng tối thiểu là 400px, sau đó áp dụng lại cho khung nhìn có chiều rộng tối thiểu 500px. Đây có phải là điểm ngắt không như vậy không? Bạn nên chọn điểm ngắt cho biểu mẫu như thế nào?

Bước 3: Thêm các thuộc tính để giúp người dùng nhập dữ liệu

Ở bước này, bạn thêm các thuộc tính vào phần tử đầu vào để cho phép trình duyệt lưu trữ và tự động điền biểu mẫu các giá trị trường và cảnh báo các trường bị thiếu dữ liệu hoặc dữ liệu không hợp lệ.

Cập nhật tệp index.html để mã biểu mẫu có dạng như sau:

<form action="#" method="post">
        
  <h1>Sign up</h1>
  
  <section>        
    <label for="name">Full name</label>
    <input id="name" name="name" autocomplete="name" 
           pattern="[\p{L}\.\- ]+" required>
  </section>

  <section>        
    <label for="email">Email</label>
    <input id="email" name="email" autocomplete="username"
           type="email" required>
  </section>
  
  <section>
    <label for="password">Password</label>
    <input id="password" name="password" autocomplete="new-password" 
           type="password" minlength="8" required>
  </section>
  
  <button id="sign-up">Sign up</button>
  
</form>

Các giá trị type có rất nhiều vai trò: * type="password" che khuất văn bản khi nhập và cho phép trình quản lý mật khẩu để đề xuất một mật khẩu mạnh. * type="email" cung cấp quy trình xác thực cơ bản và đảm bảo người dùng thiết bị di động có được bàn phím phù hợp. Thử đã ra mắt!

Nhấp vào Xem ứng dụng, rồi nhấp vào nhãn Email. Điều gì sẽ xảy ra? Tiêu điểm sẽ di chuyển đến email vì nhãn có giá trị for khớp với id của email nhập vào. Các nhãn khác và dữ liệu đầu vào cũng hoạt động theo cách tương tự. Trình đọc màn hình cũng thông báo nội dung của nhãn khi nhãn (hoặc thông tin đầu vào liên quan) được lấy tiêu điểm. Bạn có thể thử dùng tiện ích ChromeVox.

Hãy thử gửi biểu mẫu với trường trống. Trình duyệt sẽ không gửi biểu mẫu và sẽ nhắc hoàn thành dữ liệu bị thiếu và đặt trọng tâm. Đó là vì bạn đã thêm thuộc tính require vào tất cả đầu vào. Bây giờ, hãy thử gửi bằng một mật khẩu có ít hơn 8 ký tự. Trình duyệt cảnh báo rằng mật khẩu không đủ dài và tập trung vào việc nhập mật khẩu do minlength="8" . Cách làm tương tự cũng áp dụng cho pattern (dùng để nhập tên) và các thuộc tính khác các giới hạn xác thực. Trình duyệt thực hiện tất cả những việc này một cách tự động mà không cần thêm mã nào.

Việc sử dụng giá trị autocomplete name cho đầu vào Tên đầy đủ là hợp lý, nhưng còn dữ liệu đầu vào khác không? * autocomplete="username" cho mục nhập Email có nghĩa là trình quản lý mật khẩu của trình duyệt sẽ lưu trữ địa chỉ email là 'tên' cho người dùng này (tên người dùng!) cùng với mật khẩu. * autocomplete="new-password" cho Mật khẩu là gợi ý cho trình quản lý mật khẩu rằng đề nghị lưu trữ giá trị này làm mật khẩu cho trang web hiện tại. Sau đó, bạn có thể sử dụng autocomplete="current-password" để bật tính năng tự động điền trong biểu mẫu đăng nhập (xin lưu ý rằng biểu mẫu đăng ký).

Bước 4: Giúp người dùng nhập mật khẩu an toàn

Với biểu mẫu hiện tại, bạn có nhận thấy vấn đề gì khi nhập mật khẩu không?

Có hai vấn đề: * Không có cách nào để biết có hạn chế đối với giá trị mật khẩu hay không. * Bạn không nhìn thấy mật khẩu để kiểm tra xem mình có đúng hay không.

Đừng làm người dùng phải đoán!

Cập nhật phần mật khẩu của index.html bằng mã sau:

<section>
  <label for="password">Password</label>
  <button id="toggle-password" type="button" aria-label="Show password as plain text. 
          Warning: this will display your password on the screen.">Show password</button>
  <input id="password" name="password" type="password" autocomplete="new-password" 
         minlength="8" aria-describedby="password-constraints" required>
  <div id="password-constraints">Eight or more characters.</div>
</section>

Thao tác này sẽ bổ sung các tính năng mới để giúp người dùng nhập mật khẩu:

  • Một nút (thực ra chỉ là văn bản) để bật/tắt chế độ hiển thị mật khẩu. (Các chức năng của nút sẽ được thêm vào cùng với JavaScript.)
  • Thuộc tính aria-label cho nút bật/tắt mật khẩu.
  • Thuộc tính aria-describedby cho mật khẩu đã nhập. Trình đọc màn hình đọc văn bản nhãn, loại dữ liệu đầu vào (mật khẩu) rồi đến phần mô tả.

Để bật nút bật/tắt mật khẩu và hiển thị cho người dùng thông tin về các quy tắc ràng buộc đối với mật khẩu, hãy sao chép tất cả JavaScript bên dưới và dán vào tệp js/main.js của bạn.

(CSS đã được tạo sẵn từ bước 2. Hãy xem để biết nút bật/tắt mật khẩu hoạt động như thế nào được tạo kiểu và định vị.)

  • Biểu tượng có hiệu quả hơn văn bản để bật/tắt chế độ hiển thị mật khẩu? Dùng thử tính năng Kiểm thử khả năng sử dụng của chiết khấu với một nhóm nhỏ bạn bè hoặc đồng nghiệp.

  • Để trải nghiệm cách trình đọc màn hình hoạt động với biểu mẫu, hãy cài đặt tiện ích ChromeVox và di chuyển qua biểu mẫu. Bạn có thể hoàn tất biểu mẫu này chỉ bằng ChromeVox không? Nếu không, bạn sẽ thay đổi điều gì?

Lúc này, biểu mẫu của bạn sẽ có dạng như sau:

Tìm hiểu thêm

Lớp học lập trình này không bao gồm một số tính năng quan trọng:

  • Đang kiểm tra xem có mật khẩu nào bị lộ không. Bạn tuyệt đối không được để mật khẩu đã bị lộ. Bạn có thể (và nên) sử dụng dịch vụ kiểm tra mật khẩu để phát hiện mật khẩu bị lộ. Bạn có thể sử dụng một dịch vụ hiện có hoặc tự chạy một dịch vụ trên máy chủ của riêng mình. Hãy dùng thử ngay! Thêm mật khẩu đang kiểm tra biểu mẫu của bạn.

  • Đường liên kết đến các tài liệu về Điều khoản dịch vụ và chính sách quyền riêng tư: trình bày rõ cho người dùng cách bạn bảo vệ dữ liệu của mình.

  • Phong cách và thương hiệu: hãy đảm bảo những yếu tố này phù hợp với phần còn lại của trang web. Khi nhập tên và địa chỉ và thanh toán, người dùng cần cảm thấy thoải mái và tin tưởng rằng họ vẫn đang ở đúng nơi.

  • Analytics và hoạt động giám sát người dùng thực: giúp kiểm tra và giám sát hiệu suất và khả năng hữu dụng của kiểu thiết kế biểu mẫu đối với người dùng thực.