Rumah >hujung hadapan web >tutorial css >Panduan Lengkap untuk Borang HTML dan Pengesahan Kekangan
Takeaways Key
Pelayar moden mempunyai keupayaan untuk memeriksa bahawa kekangan ini diperhatikan oleh pengguna, dan boleh memberi amaran kepada mereka apabila peraturan tersebut telah dilanggar. Ini dikenali sebagai pengesahan contstraint.
Pengesahan sisi pelayan klien
. Dalam kebanyakan kes, ia benar -benar bergantung pada apa yang anda cuba lakukan. Tetapi pertama, inilah mesej amaran besar:
Pengesahan sisi klien adalah nicety yang boleh menghalang kesilapan masuk data yang biasa sebelum aplikasi membuang masa dan jalur lebar menghantar data ke pelayan. Ia bukan pengganti pengesahan sisi pelayan!
Sentiasa membersihkan pelayan data. Tidak setiap permintaan akan datang dari penyemak imbas. Walaupun ia berlaku, tidak ada jaminan penyemak imbas mengesahkan data. Sesiapa yang tahu bagaimana membuka alat pemaju penyemak imbas juga boleh memintas HTML dan JavaScript anda yang dibuat dengan penuh kasih sayang.
HTML menawarkan:
tetapi anda akan menggunakan
<span><span><span><input</span> type<span>="text"</span> name<span>="username"</span> /></span> </span>
Atribut Jenis menetapkan jenis kawalan, dan terdapat pilihan pilihan yang besar:
Penyemak imbas jatuh ke teks jika anda meninggalkan atribut jenis atau ia tidak menyokong pilihan. Pelayar moden mempunyai sokongan yang baik untuk semua jenis, tetapi pelayar lama masih akan menunjukkan medan entri teks.
atribut lain berguna termasuk:
serta jenis input, HTML5 menyediakan output baca sahaja:
medan harus mempunyai
<span><span><span><input</span> type<span>="text"</span> name<span>="username"</span> /></span> </span>
atau pautan ID medan ke label menggunakan atribut:
<span><span><span><label</span>></span>your name <span><span><input</span> type<span>="text"</span> name<span>="name"</span> /></span><span><span><label</span>></span> </span>
Label adalah penting untuk aksesibiliti. Anda mungkin menghadapi borang yang menggunakan tempat letak untuk menjimatkan ruang skrin:
<span><span><span><label</span> for<span>="nameid"</span>></span>your name<span><span></label</span>></span> </span><span><span><span><input</span> type<span>="text"</span> id<span>="nameid"</span> name<span>="name"</span> /></span> </span>
Teks tempat letak hilang apabila pengguna menaip sesuatu - walaupun satu ruang. Lebih baik menunjukkan label daripada memaksa pengguna ingat apa yang dikehendaki medan!
Jenis medan dan atribut kekangan mengubah tingkah laku input penyemak imbas. Sebagai contoh, input nombor menunjukkan papan kekunci angka pada peranti mudah alih. Medan ini mungkin menunjukkan pemutar dan papan kekunci Kursor ke atas/keyboard akan kenaikan dan nilai penurunan.
Kebanyakan jenis bidang adalah jelas, tetapi terdapat pengecualian. Sebagai contoh, kad kredit adalah angka, tetapi pemutar kenaikan/penurunan tidak berguna dan terlalu mudah untuk ditekan ke atas atau ke bawah apabila memasuki nombor 16 digit. Lebih baik menggunakan jenis teks standard, tetapi tetapkan atribut InputMode kepada angka, yang menunjukkan papan kekunci yang sesuai. Menetapkan AutoComplete = "CC-Number" juga mencadangkan mana-mana nombor kad yang telah dikonfigurasi atau sebelum ini.
menggunakan jenis medan yang betul dan Autocorrect menawarkan faedah yang sukar dicapai dalam JavaScript. Sebagai contoh, sesetengah pelayar mudah alih boleh:
cuba menyerahkan nilai kosong menghalang penyerahan borang dan menunjukkan mesej berikut dalam Chrome:
<span><span><span><input</span> type<span>="text"</span> name<span>="name"</span> value<span>=""</span> placeholder<span>="your name"</span> /></span> </span>
Spinners tidak akan membenarkan nilai di luar julat 1 hingga 100. Mesej pengesahan yang sama muncul jika anda menaip rentetan yang bukan nombor. semua tanpa satu baris javascript.
anda boleh menghentikan pengesahan penyemak imbas dengan:
Menambah atribut novalidate ke elemen
Menulis kawalan input tersuai adalah sukar. Anda perlu mempertimbangkan tetikus, papan kekunci, sentuhan, ucapan, kebolehcapaian, dimensi skrin, dan apa yang berlaku apabila JavaScript gagal. Anda juga mencipta pengalaman pengguna yang berbeza. Mungkin kawalan anda lebih tinggi daripada pemetik tarikh standard di desktop, iOS, dan Android, tetapi UI yang tidak dikenali akan mengelirukan beberapa pengguna.
Terdapat tiga sebab utama pemaju memilih untuk membuat input berasaskan JavaScript.
Styling CSS adalah terhad dan sering memerlukan hacks, seperti overlaying input dengan labelnya :: sebelum dan :: selepas unsur-unsur pseudo. Keadaan ini bertambah baik, tetapi mempersoalkan apa -apa reka bentuk yang mengutamakan bentuk ke atas fungsi.
Pada dasarnya, anda pengekodan untuk Internet Explorer. Pengguna IE tidak akan mendapat pemetik tarikh tetapi masih boleh memasukkan tarikh dalam format YYYY-MM-DD. Jika pelanggan anda menegaskan, maka muatkan polyfill dalam IE sahaja. Tidak perlu membebankan pelayar moden.
situasi ini jarang berlaku, tetapi selalu bermula dengan medan HTML5 yang sesuai. Mereka cepat, dan mereka bekerja walaupun sebelum skrip telah dimuatkan. Anda secara progresif boleh meningkatkan bidang yang diperlukan. Sebagai contoh, percikan JavaScript dapat memastikan tarikh akhir acara kalendar berlaku selepas tarikh permulaan.
Secara ringkas: Elakkan semula mencipta kawalan HTML!
anda boleh memohon kelas pseudo berikut untuk memasukkan medan untuk menggayakannya mengikut keadaan semasa:
anda boleh gaya teks pemegang letak input dengan :: Pseudo-Element Placeholder:
<span><span><span><input</span> type<span>="text"</span> name<span>="username"</span> /></span> </span>
pemilih di atas mempunyai kekhususan yang sama, jadi pesanan boleh menjadi penting. Pertimbangkan contoh ini:
<span><span><span><label</span>></span>your name <span><span><input</span> type<span>="text"</span> name<span>="name"</span> /></span><span><span><label</span>></span> </span>
Input tidak sah mempunyai teks merah, tetapi ia hanya digunakan untuk input dengan atribut kurang upaya - jadi semua input yang diaktifkan adalah hitam.
Penyemak imbas menggunakan gaya pengesahan pada beban halaman. Sebagai contoh, dalam kod berikut setiap medan tidak sah diberikan sempadan merah:
<span><span><span><label</span> for<span>="nameid"</span>></span>your name<span><span></label</span>></span> </span><span><span><span><input</span> type<span>="text"</span> id<span>="nameid"</span> name<span>="name"</span> /></span> </span>
Pengguna dihadapkan dengan set kotak merah yang menakutkan sebelum mereka berinteraksi dengan borang tersebut. Menunjukkan kesilapan pengesahan selepas penyerahan pertama atau sebagai nilai diubah akan menawarkan pengalaman yang lebih baik. Di sinilah langkah JavaScript ...
API Pengesahan Kekangan menyediakan pilihan penyesuaian borang yang dapat meningkatkan pemeriksaan medan HTML standard. Anda boleh:
Sebelum menggunakan API, kod anda harus melumpuhkan mesej pengesahan dan ralat lalai dengan menetapkan harta novalidate borang untuk benar (sama seperti menambah atribut novalidate):
<span><span><span><input</span> type<span>="text"</span> name<span>="name"</span> value<span>=""</span> placeholder<span>="your name"</span> /></span> </span>
anda kemudian boleh menambah pengendali acara - seperti ketika borang mengemukakan:
<span><span><span><input</span> type<span>="number"</span> min<span>="1"</span> max<span>="100"</span> required /></span> </span>
Pengendali boleh menyemak keseluruhan borang adalah sah menggunakan kaedah CheckValidity () atau ReportValidity (), yang kembali benar apabila semua input borang sah. (Perbezaannya ialah pemeriksaan CheckValidity () sama ada sebarang input tertakluk kepada pengesahan kekangan.)
Dokumen Mozilla Jelaskan:
Acara tidak sah juga dicetuskan pada setiap bidang yang tidak sah. Ini tidak gelembung: Pengendali mesti ditambah kepada setiap kawalan yang menggunakannya.
<span>/* blue placeholder on email fields */ </span><span>input<span><span>[type="email"]</span>::placeholder</span> { </span> <span>color: blue; </span><span>} </span>
Borang yang sah kini boleh menanggung cek pengesahan selanjutnya. Begitu juga, bentuk yang tidak sah boleh mempunyai bidang yang tidak sah yang diserlahkan.
bidang individu mempunyai sifat pengesahan kekangan berikut:
Willvalidate: Mengembalikan benar jika elemen itu adalah calon untuk pengesahan kekangan.
PengesahanMessage: Mesej pengesahan. Ini akan menjadi rentetan kosong jika medan itu sah.
Valitity: Objek ValidityState. Ini mempunyai harta yang sah yang ditetapkan benar apabila medan itu sah. Jika ia palsu, satu atau lebih sifat berikut akan benar:
bidang individu mempunyai kaedah pengesahan kekangan berikut:
fungsi pengendali () boleh melengkapkan melalui setiap bidang dan memohon kelas yang tidak sah ke elemen induknya di mana perlu:
<span><span><span><input</span> type<span>="text"</span> name<span>="username"</span> /></span> </span>
Anggapkan HTML anda menentukan medan e -mel:
<span><span><span><label</span>></span>your name <span><span><input</span> type<span>="text"</span> name<span>="name"</span> /></span><span><span><label</span>></span> </span>
Skrip menggunakan kelas yang tidak sah ke
<span><span><span><label</span> for<span>="nameid"</span>></span>your name<span><span></label</span>></span> </span><span><span><span><input</span> type<span>="text"</span> id<span>="nameid"</span> name<span>="name"</span> /></span> </span>
Demonstrasi berikut menunjukkan borang hubungan contoh yang memerlukan nama pengguna dan sama ada alamat e -mel, nombor telefon, atau kedua -duanya:
Lihat pen Contoh API Pengesahan Kekangan oleh SitePoint (@SitePoint) pada codepen.
Ia dilaksanakan menggunakan kelas pengesahan bentuk generik bernama FormValidate. Elemen bentuk diluluskan apabila meneliti objek. Parameter kedua pilihan boleh ditetapkan:
<span><span><span><input</span> type<span>="text"</span> name<span>="name"</span> value<span>=""</span> placeholder<span>="your name"</span> /></span> </span>
Kaedah .addCustom (medan, func) mentakrifkan fungsi pengesahan tersuai. Kod berikut memastikan sama ada medan e -mel atau TEL adalah sah (tidak diperlukan atribut):
<span><span><span><input</span> type<span>="number"</span> min<span>="1"</span> max<span>="100"</span> required /></span> </span>
Objek FormValidate memantau kedua -dua yang berikut:
kedua -duanya memanggil kaedah .validatefield (medan), yang memeriksa sama ada bidang meluluskan pengesahan kekangan standard. Apabila ia berlaku, sebarang fungsi pengesahan tersuai yang diberikan kepada bidang itu melaksanakannya. Semua mesti kembali benar untuk bidang itu sah.
Bidang tidak sah mempunyai kelas yang tidak sah yang digunakan untuk elemen induk medan, yang memaparkan mesej bantuan merah menggunakan CSS.
Akhirnya, objek memanggil fungsi hantar tersuai apabila borang keseluruhannya sah:
<span><span><span><input</span> type<span>="text"</span> name<span>="username"</span> /></span> </span>
Sebagai alternatif, anda boleh menggunakan addEventListener standard untuk mengendalikan peristiwa hantar borang, kerana FormValidate menghalang pengendali selanjutnya berjalan apabila borang tidak sah.
adalah asas bagi semua aplikasi web dan pemaju menghabiskan masa yang banyak memanipulasi input pengguna. Pengesahan kekangan disokong dengan baik: penyemak imbas boleh mengendalikan kebanyakan cek dan menunjukkan pilihan input yang sesuai.
Cadangan:
Akhirnya: Lupakan Internet Explorer!
Kecuali pelanggan anda kebanyakannya pengguna IE, tidak perlu melaksanakan fungsi pengesahan sandaran anda sendiri. Semua medan input HTML5 berfungsi dalam IE tetapi mungkin memerlukan lebih banyak usaha pengguna. (Sebagai contoh, IE tidak akan mengesan apabila anda memasukkan alamat e -mel yang tidak sah.) Anda masih perlu mengesahkan data pada pelayan, jadi pertimbangkan untuk menggunakannya sebagai asas pemeriksaan ralat IE.
Pengesahan bentuk HTML adalah aspek penting dalam pembangunan web. Ia memastikan bahawa data yang dimasukkan oleh pengguna ke dalam bentuk memenuhi kriteria tertentu sebelum dihantar ke pelayan. Ini bukan sahaja mengekalkan integriti data tetapi juga meningkatkan pengalaman pengguna dengan memberikan maklum balas segera mengenai ketepatan data yang dimasukkan. Tanpa pengesahan bentuk, terdapat risiko menerima data yang salah, tidak lengkap, atau bahkan berniat jahat, yang boleh membawa kepada pelbagai isu termasuk rasuah data, pelanggaran keselamatan, dan kemalangan sistem.
Atas ialah kandungan terperinci Panduan Lengkap untuk Borang HTML dan Pengesahan Kekangan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!