Panduan Lengkap untuk Borang HTML dan Pengesahan Kekangan
Takeaways Key
- HTML5 meningkatkan pengesahan bentuk dengan memperkenalkan jenis input dan atribut baru yang mengautomasikan banyak proses pengesahan, mengurangkan keperluan untuk JavaScript yang luas.
- Pengesahan kekangan dalam HTML5 membolehkan penyemak imbas untuk memeriksa input pengguna secara automatik terhadap peraturan yang ditentukan sebelum penyerahan borang, meningkatkan pengalaman pengguna dan integriti data.
- Pengesahan sisi klien, sementara membantu untuk menangkap kesilapan biasa, mesti ditambah dengan pengesahan sisi pelayan untuk memastikan keselamatan data dan integriti.
- input JavaScript tersuai harus dielakkan apabila mungkin, kerana mereka merumitkan kebolehcapaian dan mungkin bertentangan dengan fungsi penyemak imbas asli.
- CSS boleh digunakan untuk medan input gaya berdasarkan keadaan pengesahan mereka, dengan kelas pseudo seperti: sah dan: tidak sah, yang membolehkan maklum balas dinamik pada input pengguna.
- API Pengesahan Kekangan dalam HTML5 membolehkan senario pengesahan tersuai yang HTML sahaja tidak dapat mengendalikan, seperti membandingkan dua bidang atau cek asynchronous, meningkatkan fungsi bentuk dan interaksi pengguna.
- apakah pengesahan kekangan?
Setiap bidang bentuk mempunyai tujuan. Dan tujuan ini sering ditadbir oleh contraints - atau peraturan yang mengawal apa yang sepatutnya dan tidak boleh dimasukkan ke dalam setiap bidang bentuk. Sebagai contoh, medan e -mel akan memerlukan alamat e -mel yang sah; Medan kata laluan mungkin memerlukan jenis aksara tertentu dan mempunyai bilangan minimum aksara yang diperlukan; dan medan teks mungkin mempunyai had pada berapa banyak aksara yang dapat dimasukkan.
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
Majoriti kod JavaScript yang ditulis pada tahun-tahun awal bahasa yang dikendalikan pengesahan borang klien. Malah pada hari ini, pemaju menghabiskan masa penulisan masa yang signifikan untuk memeriksa nilai medan.
Adakah ini masih diperlukan dalam pelayar moden? Mungkin tidak. 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.
medan input HTML5
HTML menawarkan:
-
Untuk senarai drop-down pilihan -
untuk ... butang
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:
medan output html
serta jenis input, HTML5 menyediakan output baca sahaja:
- output: Hasil teks pengiraan atau tindakan pengguna
- Kemajuan: Bar Kemajuan dengan Nilai dan Atribut Max
- Meter: Skala yang boleh berubah antara hijau, ambar, dan merah bergantung kepada nilai yang ditetapkan untuk nilai, min, max, rendah, tinggi, dan optimum.
Label input
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!
tingkah laku input
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:
- Import butiran kad kredit dengan mengimbas kad menggunakan kamera
- mengimport kod satu kali yang dihantar oleh SMS
Pengesahan Automatik
Penyemak imbas memastikan nilai input mematuhi kekangan yang ditakrifkan oleh jenis, min, max, langkah, minlength, maxlength, corak, dan atribut yang diperlukan. Contohnya: 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
- Menambah atribut formnovalidate ke butang penyerahan atau imej
- Membuat input JavaScript tersuai
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.
1. Kawalan standard sukar untuk gaya
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.
2. Jenis moden tidak disokong dalam pelayar lama
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.
3. Anda memerlukan jenis input baru yang tidak pernah dilaksanakan sebelum
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!
Styling Pengesahan CSS
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 ...
javascript dan api pengesahan kekangan
API Pengesahan Kekangan menyediakan pilihan penyesuaian borang yang dapat meningkatkan pemeriksaan medan HTML standard. Anda boleh:
- Hentikan pengesahan sehingga pengguna berinteraksi dengan medan atau menyerahkan borang
- tunjukkan mesej ralat dengan gaya tersuai
- Menyediakan pengesahan tersuai yang mustahil di HTML sahaja. Ini sering diperlukan apabila anda perlu membandingkan dua input - seperti ketika anda memasukkan alamat e -mel atau nombor telefon, periksa medan kata laluan "baru" dan "mengesahkan" mempunyai nilai yang sama, atau pastikan satu tarikh datang selepas yang lain.
Pengesahan borang
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.
Pengesahan medan
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:
ValidityState Keterangan .badinput Penyemak imbas tidak dapat memahami input .CustomError Mesej kesahihan tersuai telah ditetapkan .patternmismatch Nilai tidak sepadan dengan atribut corak yang ditentukan .rangeOverflow nilainya lebih besar daripada atribut maksimum .rangeunderflow nilainya kurang daripada atribut min .Stepmismatch Nilai tidak sesuai dengan peraturan atribut langkah .toolong Panjang rentetan lebih besar daripada atribut maxLength .tooshort Panjang rentetan kurang daripada atribut minlength .typemismatch Nilai bukan e -mel atau URL yang sah .valuemissing Nilai yang diperlukan adalah kosong
bidang individu mempunyai kaedah pengesahan kekangan berikut:
- setCustomValidity (mesej): Menetapkan mesej ralat untuk medan yang tidak sah. Rentetan kosong mesti diluluskan apabila medan itu sah atau medan akan kekal tidak sah selama -lamanya.
- CheckValidity (): pulangan benar apabila input sah. Harta valitity.valid melakukan perkara yang sama, tetapi checkvalidity () juga mencetuskan peristiwa yang tidak sah di lapangan yang boleh berguna.
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>
Membuat Validator Borang Custom
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:
- benar untuk mengesahkan setiap bidang kerana pengguna berinteraksi dengannya
- palsu (lalai) untuk mengesahkan semua bidang selepas penyerahan pertama (pengesahan peringkat lapangan berlaku selepas itu)
<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:
- peristiwa focusout, yang kemudian periksa medan individu
- borang hantar acara, yang kemudian periksa setiap medan
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.
Form Finesse
Borangadalah 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:
- Gunakan jenis input HTML standard jika mungkin. Tetapkan min, max, langkah, minlength, maxlength, corak, diperlukan, inputMode, dan atribut autokomplet yang sesuai.
- Jika perlu, gunakan sedikit JavaScript untuk membolehkan pengesahan dan mesej tersuai.
- Untuk bidang yang lebih kompleks, secara progresif meningkatkan input standard.
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.
Soalan Lazim (Soalan Lazim) mengenai Borang HTML dan Pengesahan Kekangan
Apakah kepentingan pengesahan bentuk HTML?
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.
Bagaimanakah HTML5 memperbaiki pengesahan bentuk?
bagaimana saya boleh melakukan pengesahan asynchronous dalam html5?
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Ia ' s! Tahniah kepada pasukan Vue untuk menyelesaikannya, saya tahu ia adalah usaha besar dan lama datang. Semua dokumen baru juga.

Saya mempunyai seseorang yang menulis dengan soalan yang sangat legit ini. Lea hanya blog tentang bagaimana anda boleh mendapatkan sifat CSS yang sah dari penyemak imbas. That ' s seperti ini.

Pada hari yang lain, saya melihat sedikit ini sangat indah dari laman web Corey Ginnivan di mana koleksi kad timbunan di atas satu sama lain semasa anda menatal.

Jika kita perlu menunjukkan dokumentasi kepada pengguna secara langsung dalam editor WordPress, apakah cara terbaik untuk melakukannya?

Terdapat beberapa aplikasi desktop ini di mana matlamat menunjukkan laman web anda pada dimensi yang berbeza pada masa yang sama. Oleh itu, anda boleh menulis

CSS Grid adalah koleksi sifat yang direka untuk menjadikan susun atur lebih mudah daripada yang pernah berlaku. Seperti apa -apa, ada sedikit keluk pembelajaran, tetapi grid adalah

Saya melihat Font Google melancarkan reka bentuk baru (tweet). Berbanding dengan reka bentuk besar yang terakhir, ini terasa lebih berulang. Saya hampir tidak dapat memberitahu perbezaannya
