Codelab praktik terbaik formulir pendaftaran

Codelab ini menunjukkan cara membuat formulir pendaftaran yang aman, mudah diakses, dan mudah digunakan.

Langkah 1: Gunakan HTML yang bermakna

Pada langkah ini, Anda akan mempelajari cara menggunakan elemen formulir untuk mengoptimalkan fitur browser bawaan.

  • Klik Remix untuk Mengedit agar project dapat diedit.

Lihat HTML untuk formulir Anda di index.html. Anda akan melihat input untuk nama, email, dan sandi. Masing-masing berada dalam satu bagian, dan masing-masing memiliki label. Tombol Daftar adalah... <button>! Nanti dalam codelab ini, Anda akan mempelajari kekuatan khusus dari semua elemen ini.

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

Klik Lihat Aplikasi untuk melihat pratinjau formulir pendaftaran. Opsi ini menunjukkan tampilan formulir tanpa CSS selain gaya browser default.

  • Apakah gaya default terlihat bagus? Apa yang akan Anda ubah untuk membuat formulir terlihat lebih baik?
  • Apakah gaya default berfungsi dengan baik? Masalah apa yang mungkin terjadi saat menggunakan formulir Anda? Bagaimana dengan di perangkat seluler? Bagaimana dengan pembaca layar atau teknologi pendukung lainnya?
  • Siapa pengguna Anda, serta perangkat dan browser apa yang Anda targetkan?

Menguji formulir Anda

Anda dapat memperoleh banyak hardware dan menyiapkan lab perangkat, tetapi ada cara yang lebih murah dan mudah untuk mencoba formulir di berbagai browser, platform, dan perangkat:

Klik Lihat Aplikasi untuk melihat pratinjau formulir pendaftaran.

  • Coba formulir Anda di perangkat lain menggunakan Mode Perangkat Chrome DevTools.
  • Sekarang buka formulir di ponsel atau perangkat sungguhan lainnya. Perbedaan apa yang Anda lihat?

Langkah 2: Tambahkan CSS agar formulir berfungsi dengan lebih baik

Klik View Source untuk kembali ke kode sumber Anda.

Sejauh ini tidak ada yang salah dengan HTML, tetapi Anda perlu memastikan formulir Anda berfungsi dengan baik untuk beragam pengguna di perangkat seluler dan desktop.

Pada langkah ini, Anda akan menambahkan CSS untuk membuat formulir lebih mudah digunakan.

Salin dan tempel semua CSS berikut ke file css/main.css:

Klik Lihat Aplikasi untuk melihat formulir pendaftaran bergaya. Lalu klik View Source untuk kembali ke css/main.css.

  • Apakah CSS ini berfungsi untuk berbagai browser dan ukuran layar?

  • Coba sesuaikan padding, margin, dan font-size agar sesuai dengan perangkat pengujian Anda.

  • CSS mengutamakan seluler. Kueri media digunakan untuk menerapkan aturan CSS untuk area pandang yang lebarnya minimal 400px, lalu digunakan lagi untuk area pandang yang lebarnya minimal 500px. Apakah titik henti sementara ini memadai? Bagaimana sebaiknya Anda memilih titik henti sementara untuk formulir?

Langkah 3: Tambahkan atribut untuk membantu pengguna memasukkan data

Pada langkah ini, Anda akan menambahkan atribut ke elemen input agar browser dapat menyimpan dan mengisi otomatis nilai kolom formulir, serta memperingatkan kolom yang berisi data yang tidak ada atau tidak valid.

Perbarui file index.html Anda sehingga kode formulir terlihat seperti ini:

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

Nilai type memiliki banyak fungsi: * type="password" menyamarkan teks saat dimasukkan dan memungkinkan pengelola sandi browser menyarankan sandi yang kuat. * type="email" memberikan validasi dasar dan memastikan pengguna seluler mendapatkan keyboard yang sesuai. Cobalah!

Klik Lihat Aplikasi, lalu klik label Email. Apa yang terjadi? Fokus berpindah ke input email karena label memiliki nilai for yang cocok dengan id input email. Label dan input lainnya bekerja dengan cara yang sama. Pembaca layar juga mengucapkan teks label saat label (atau input terkait label) menjadi fokus. Anda dapat mencobanya menggunakan ekstensi ChromeVox.

Coba kirimkan formulir dengan kolom kosong. Browser tidak akan mengirimkan formulir, dan meminta untuk mengisi data yang hilang dan menetapkan fokus. Hal ini terjadi karena Anda telah menambahkan atribut require ke semua input. Sekarang, coba kirimkan dengan sandi yang berisi kurang dari delapan karakter. Browser memperingatkan bahwa sandi tidak cukup panjang dan menyetel fokus pada input sandi karena atribut minlength="8". Hal yang sama berlaku untuk pattern (digunakan untuk input nama) dan batasan validasi lainnya. Browser melakukan semua ini secara otomatis, tanpa memerlukan kode tambahan.

Anda dapat menggunakan nilai autocomplete name untuk input Nama lengkap, tetapi bagaimana dengan input lainnya? * autocomplete="username" untuk input Email berarti pengelola sandi browser akan menyimpan alamat email sebagai 'nama' pengguna ini (nama pengguna) untuk disertakan dengan sandi. * autocomplete="new-password" untuk Sandi adalah petunjuk bagi pengelola sandi yang harus menawarkan untuk menyimpan nilai ini sebagai sandi untuk situs saat ini. Kemudian, Anda dapat menggunakan autocomplete="current-password" untuk mengaktifkan isi otomatis di formulir login (ingat, ini adalah formulir sign-up).

Langkah 4: Bantu pengguna memasukkan sandi yang aman

Dengan formulir sebagaimana adanya, apakah Anda menyadari ada yang salah dengan masukan {i>password<i}?

Ada dua masalah: * Tidak ada cara untuk mengetahui apakah ada batasan pada nilai sandi. * Anda tidak dapat melihat sandi untuk memeriksa apakah Anda sudah benar.

Jangan membuat pengguna menebak-nebak!

Perbarui bagian sandi index.html dengan kode berikut:

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

Tindakan ini menambahkan fitur baru untuk membantu pengguna memasukkan sandi:

  • Tombol (sebenarnya hanya teks) untuk beralih tampilan sandi. (Fungsi tombol akan ditambahkan bersama JavaScript.)
  • Atribut aria-label untuk tombol pengalihan sandi.
  • Atribut aria-describedby untuk input sandi. Pembaca layar membaca teks label, jenis input (sandi), lalu deskripsi.

Untuk mengaktifkan tombol pengalihan sandi dan menampilkan informasi kepada pengguna tentang batasan sandi, salin semua JavaScript di bawah dan tempelkan ke file js/main.js Anda sendiri.

(CSS sudah diterapkan dari langkah 2. Lihat gaya dan posisi tombol pengalih sandi.)

  • Apakah ikon akan berfungsi lebih baik daripada teks untuk mengalihkan tampilan sandi? Cobalah Pengujian Kegunaan Diskon dengan sekelompok kecil teman atau kolega.

  • Untuk mencoba cara kerja pembaca layar dengan formulir, instal ekstensi ChromeVox dan buka formulir. Dapatkah Anda mengisi formulir hanya menggunakan ChromeVox? Jika tidak, apa yang ingin Anda ubah?

Berikut adalah tampilan formulir Anda pada tahap ini:

Melangkah lebih jauh

Codelab ini tidak mencakup beberapa fitur penting:

  • Memeriksa sandi yang telah dibobol. Anda tidak boleh mengizinkan sandi yang telah dibobol. Anda dapat (dan harus) menggunakan layanan pemeriksaan sandi untuk menemukan sandi yang telah dibobol. Anda dapat menggunakan layanan yang ada atau menjalankannya sendiri di server Anda sendiri. Cobalah! Tambahkan pemeriksaan sandi ke formulir Anda.

  • Link ke Persyaratan Layanan dan dokumen kebijakan privasi Anda: jelaskan kepada pengguna cara Anda mengamankan data mereka.

  • Gaya dan branding: pastikan semuanya cocok dengan keseluruhan situs Anda. Saat memasukkan nama dan alamat serta melakukan pembayaran, pengguna harus merasa nyaman dan yakin bahwa mereka masih di tempat yang tepat.

  • Analytics dan Pemantauan Pengguna Nyata: memungkinkan performa dan kegunaan desain formulir diuji dan dipantau untuk pengguna sungguhan.