Intro Into HTML5 Constraint Validation
Situs web dan aplikasi interaktif tidak dapat dibayangkan tanpa formulir yang memungkinkan kami untuk melakukannya terhubung dengan pengguna kami, dan untuk dapatkan data kita perlu untuk mengamankan kelancaran transaksi dengan mereka. Kami memang butuh input pengguna yang valid, namun kita perlu mendapatkannya dengan cara itu tidak membuat frustrasi pengguna kami terlalu banyak.
Meskipun kami dapat meningkatkan kegunaan formulir kami dengan pola desain UX yang dipilih dengan cerdas, HTML5 juga memiliki mekanisme asli untuk validasi kendala yang memungkinkan kami untuk tangkap kesalahan input tepat di front-end.
Dalam posting ini, kita akan fokus validasi kendala yang disediakan browser, dan melihat bagaimana pengembang frontend bisa mengamankan input pengguna yang valid menggunakan HTML5.
Mengapa Kami Membutuhkan Validasi Input Front-End
Validasi input memiliki dua tujuan utama. Konten yang kami dapatkan harus:
1. Berguna
Kita butuh data yang dapat digunakan yang dapat kami kerjakan. Kita perlu membuat orang masuk data realistis dalam format yang tepat. Misalnya, tidak ada orang yang hidup hari ini yang lahir 200 tahun yang lalu. Mendapatkan data seperti ini mungkin tampak lucu pada awalnya, tetapi dalam jangka panjang itu menyebalkan, dan mengisi basis data kami dengan data yang tidak berguna.
2. Aman
Ketika mengacu pada keamanan, ini berarti kita perlu mencegah injeksi konten berbahaya - baik disengaja atau tidak sengaja.
Kegunaan (mendapatkan data yang masuk akal) dapat dicapai hanya di sisi klien, tim backend tidak bisa membantu terlalu banyak dengan ini. Untuk mendapatkan keamanan, pengembang depan dan belakang harus bekerja bersama.
Jika pengembang frontend benar memvalidasi input di sisi klien, tim backend harus berurusan dengan jauh lebih sedikit kerentanan. Peretasan (sebuah situs) sering kali mengharuskan mengirimkan data tambahan, atau data dalam format yang salah. Pengembang dapat memerangi lubang keamanan seperti ini, berhasil bertarung dari front-end.
Misalnya, panduan keamanan PHP ini merekomendasikan untuk memeriksa semua yang kami bisa di sisi klien. Mereka menekankan pentingnya validasi input frontend dengan memberikan banyak contoh, seperti:
"Validasi input berfungsi paling baik dengan nilai yang sangat terbatas, mis. Ketika sesuatu harus berupa integer, atau string alfanumerik, atau URL HTTP."
Dalam validasi input frontend, tugas kita adalah memaksakan kendala yang masuk akal pada input pengguna. Fitur validasi kendala HTML5 memberi kami sarana untuk melakukannya.
HTML5 Batasan Validasi
Sebelum HTML5, pengembang frontend terbatas pada memvalidasi input pengguna dengan JavaScript, yang merupakan proses yang membosankan dan rentan kesalahan. Untuk meningkatkan validasi formulir sisi klien, HTML5 telah memperkenalkan a validasi kendala algoritma yang berjalan di browser modern, dan memeriksa validitas input yang dikirimkan.
Untuk melakukan evaluasi, algoritma menggunakan atribut yang berhubungan dengan validasi elemen input, seperti ,
, dan
. Jika Anda ingin tahu bagaimana validasi kendala terjadi langkah demi langkah di peramban, periksa dokumen WhatWG ini.
Berkat fitur validasi kendala HTML5, kami dapat menjalankan semuanya tugas validasi input standar di sisi klien tanpa JavaScript, hanya dengan HTML5.
Untuk melakukan tugas yang berhubungan dengan validasi yang lebih kompleks, HTML5 memberi kita Constraint Validation JavaScript API kita dapat menggunakan untuk mengatur skrip validasi khusus kami.
Validasi dengan Jenis Input Semantik
HTML5 telah diperkenalkan tipe input semantik yang - selain menunjukkan makna elemen untuk agen pengguna - juga dapat digunakan untuk itu memvalidasi input pengguna dengan membatasi pengguna ke format input tertentu.
Selain itu jenis input yang sudah ada sebelum HTML5 (teks
, kata sandi
, menyerahkan
, atur ulang
, radio
, kotak centang
, tombol
, tersembunyi
), kita juga bisa menggunakan yang berikut ini jenis input HTML5 semantik: e-mail
,tel
,url
,jumlah
,waktu
,tanggal
,tanggal Waktu
,datetime-local
, bulan
,minggu
, jarak
, pencarian
,warna
.
Kami dapat menggunakan jenis input HTML5 dengan aman dengan browser lama, karena mereka akan berperilaku sebagai bidang di browser yang tidak mendukungnya.
Mari kita lihat apa yang terjadi ketika pengguna memasukkan tipe input yang salah. Katakanlah kita telah membuat bidang masukan email dengan kode berikut:
Saat pengguna mengetik string yang tidak menggunakan format email, algoritma validasi kendala tidak mengirimkan formulir, dan mengembalikan pesan kesalahan:
Aturan yang sama juga berlaku untuk tipe input lain, misalnya untuk type = "url"
pengguna hanya dapat mengirimkan input yang mengikuti format URL (dimulai dengan protokol, seperti http: //
atau ftp: //
).
Beberapa tipe input menggunakan desain itu bahkan tidak mengizinkan pengguna untuk memasukkan format input yang salah, sebagai contoh warna
dan jarak
.
Jika kita menggunakan warna
tipe input pengguna dibatasi untuk memilih warna dari color picker atau tetap dengan default hitam. Kolom input adalah dibatasi oleh desain, karena itu tidak meninggalkan banyak peluang untuk kesalahan pengguna.
Bila pantas, ada baiknya mempertimbangkan menggunakan Tag HTML yang bekerja serupa dengan tipe input yang dibatasi oleh desain ini; itu memungkinkan pengguna memilih dari daftar dropdown.
Gunakan Atribut Validasi HTML5
Menggunakan tipe input semantik menetapkan batasan tertentu pada apa yang pengguna boleh kirimkan, tetapi dalam banyak kasus kami ingin melangkah lebih jauh. Inilah saatnya atribut terkait validasi dari tag dapat membantu kami.
Atribut yang terkait dengan validasi termasuk tipe input tertentu (tidak dapat digunakan pada semua jenis) di mana mereka memberikan batasan lebih lanjut.
1. wajib
untuk mendapatkan input yang valid dengan segala cara
Itu wajib
atribut adalah atribut validasi HTML yang paling terkenal. Itu adalah atribut boolean yang artinya tidak mengambil nilai, kita hanya perlu meletakkannya di dalam tag jika kita ingin menggunakannya:
Jika pengguna lupa memasukkan nilai ke dalam kolom input yang diperlukan, browser mengembalikan pesan kesalahan yang memperingatkan mereka untuk mengisi bidang, dan mereka tidak dapat mengirimkan formulir sampai mereka memberikan input yang valid. Itu sebabnya penting untuk selalu tandai secara visual bidang yang diperlukan untuk pengguna.
Itu wajib
atribut bisa digunakan bersama dengan tipe input berikut: teks
, pencarian
, url
, tel
, e-mail
, kata sandi
, tanggal
, tanggal Waktu
, datetime-local
, bulan
, minggu
,waktu
, jumlah
, kotak centang
, radio
, mengajukan
, ditambah dengan dan
Tag HTML.
2. min
, maks
dan langkah
untuk validasi angka
Itu min
, maks
dan langkah
atribut memungkinkan kita untuk menempatkan kendala pada bidang input angka. Mereka dapat digunakan bersama dengan jarak
, jumlah
, tanggal
, bulan
, minggu
, tanggal Waktu
, datetime-local
, dan waktu
tipe input.
Itu min
dan maks
atribut menyediakan cara yang bagus untuk mudah mengecualikan data yang tidak masuk akal. Misalnya, contoh di bawah ini memaksa pengguna untuk mengirimkan usia antara 18 dan 120.
Ketika algoritma validasi kendala menabrak input pengguna yang lebih kecil dari min
, atau lebih besar dari maks
nilai, itu mencegahnya mencapai backend, dan mengembalikan pesan kesalahan.
Itu langkah
atribut menentukan interval numerik antara nilai hukum dari bidang input numerik. Misalnya, jika kami ingin pengguna hanya memilih dari tahun kabisat, kami dapat menambahkan step = "4"
atribut ke lapangan. Dalam contoh di bawah ini saya menggunakan jumlah
tipe input, karena tidak ada type = "tahun"
dalam HTML5.
Dengan batasan yang telah ditentukan sebelumnya, pengguna hanya dapat memilih dari tahun kabisat antara tahun 1972 dan 2016 jika mereka menggunakan panah atas kecil yang disertakan jumlah
tipe masukan. Mereka juga dapat mengetik nilai secara manual ke dalam kolom input, tetapi jika tidak memenuhi kendala, browser akan mengembalikan pesan kesalahan.
3. panjang maksimal
untuk validasi panjang teks
Itu panjang maksimal
atribut memungkinkan untuk atur panjang karakter maksimum untuk bidang input tekstual. Dapat digunakan bersama dengan teks
, pencarian
, url
, tel
, e-mail
dan kata sandi
jenis input, dan dengan Tag HTML.
Itu panjang maksimal
atribut dapat menjadi solusi yang sangat baik untuk bidang nomor telepon yang tidak boleh memiliki lebih dari jumlah karakter tertentu, atau untuk formulir kontak di mana kami tidak ingin pengguna menulis lebih dari panjang tertentu.
Cuplikan kode di bawah ini menunjukkan contoh untuk yang terakhir, itu membatasi pesan pengguna hingga 500 karakter.
Itu panjang maksimal
atribut tidak mengembalikan pesan kesalahan, tetapi browser tidak membiarkan pengguna mengetik lebih dari jumlah karakter yang ditentukan. Itu sebabnya sangat penting untuk beri tahu pengguna tentang batasannya, jika tidak mereka tidak akan mengerti mengapa mereka tidak bisa melanjutkan pengetikan.
4. pola
untuk validasi Regex
Itu pola
atribut memungkinkan kita untuk gunakan Ekspresi Reguler dalam proses validasi input kami. Ekspresi reguler adalah a set karakter yang ditentukan sebelumnya yang membentuk pola tertentu. Kita bisa menggunakannya untuk mencari string yang mengikuti pola, atau untuk menegakkan format tertentu yang ditentukan oleh pola.
Dengan pola
atribut yang dapat kita lakukan yang terakhir - membatasi pengguna untuk mengirimkan input mereka dalam format itu cocok dengan ekspresi reguler yang diberikan.
Itu pola
atribut memiliki banyak kasus penggunaan, tetapi ini bisa sangat berguna saat kita menginginkannya memvalidasi bidang kata sandi.
Contoh di bawah ini mengharuskan pengguna untuk memasukkan kata sandi yang panjangnya minimal 8 karakter, dan mengandung setidaknya satu huruf dan satu angka (sumber dari regex yang saya gunakan).
Beberapa hal lagi
Pada artikel ini, kami telah melihat cara memanfaatkan validasi formulir yang disediakan browser disediakan oleh algoritma validasi kendala asli HTML5. Untuk membuat skrip validasi khusus kami, kami perlu menggunakan Constraint Validation API yang bisa menjadi langkah selanjutnya dalam menyempurnakan keterampilan validasi form.
Formulir HTML5 dapat diakses oleh teknologi bantu, jadi kami tidak harus menggunakan wajib aria
Atribut ARIA untuk menandai bidang input yang diperlukan untuk pembaca layar. Namun tetap bermanfaat untuk menambahkan dukungan aksesibilitas untuk browser lama. Itu juga mungkin menyisih dari validasi kendala dengan menambahkan tidak valid
atribut boolean ke elemen.