Jadual Kandungan
Memperkenalkan alpine.js dan iodine.js
Iodine.js dalam tindakan: Contoh asas
Meningkatkan dengan alpine.js
Bertindak balas terhadap perubahan input
Pengendalian ralat pelayan
Mengendalikan input saling bergantung
Rumah hujung hadapan web tutorial css Pengesahan bentuk ringan dengan alpine.js dan iodine.js

Pengesahan bentuk ringan dengan alpine.js dan iodine.js

Mar 28, 2025 am 10:17 AM

Pengesahan bentuk ringan dengan alpine.js dan iodine.js

Pengguna moden mengharapkan maklum balas segera semasa pengesahan borang. Artikel ini menunjukkan bagaimana alpine.js dan iodine.js, dua perpustakaan JavaScript ringan, membuat bentuk yang sangat interaktif dengan overhead yang minimum, sesuai untuk tapak statik kecil atau aplikasi yang diberikan pelayan (seperti Rails atau Laravel). Perpustakaan ini mengelakkan kerumitan alat membina JavaScript berat.

Kami akan membina borang dengan pengesahan yang dipertingkatkan secara progresif, mempamerkan API alpine.js dan iodine.js. Borang akhir memberikan maklum balas segera mengenai input tidak sah.

Memperkenalkan alpine.js dan iodine.js

Alpine.js adalah perpustakaan yang dihoskan CDN, yang tidak memerlukan langkah membina atau kebergantungan. Dokumentasi ringkas dan saiz kecil (8.36 kb minified dan gzipped) menjadikannya sangat cekap. Ia digambarkan sebagai penggantian JQuery/Vanilla JavaScript dengan templat seperti Vue, bukan pesaing untuk rangka kerja yang lebih besar.

Iodine.js adalah perpustakaan pengesahan bentuk mikro yang direka untuk integrasi mudah dengan mana -mana rangka kerja frontend. Ia memudahkan pengesahan dengan membenarkan pelbagai peraturan setiap medan input dan memberikan mesej ralat yang jelas.

Iodine.js dalam tindakan: Contoh asas

Berikut adalah contoh pengesahan klien asas menggunakan iodine.js, diambil melalui CDN:

 // ... (pautan cdn iodine.js akan pergi ke sini) ...
Salin selepas log masuk

Atau, menggunakan Skypack:

 import kingshottiodine dari "https://cdn.skypack.dev/@kingshott/iodine";
Salin selepas log masuk

Ingatlah untuk menggunakan kingshottIodine semasa mengimport dari Skypack. Iodine is kaedah pemeriksaan kesahihan input terhadap peraturan yang ditentukan. Ia kembali true untuk input yang sah atau rentetan ralat sebaliknya.

Kami akan menggunakan atribut data HTML untuk menyimpan peraturan pengesahan untuk setiap input:

<input type="text" name="username" data-rules='["required", "minLength:5"]'>
Salin selepas log masuk

Vanilla Javascript Mengendalikan Pengesahan:

 biarkan form = document.getElementById ("Form");
biarkan input = [... form.QuerySelectorAll ("input [data-peraturan]")];

fungsi onSubmit (event) {
  inputs.map ((input) => {
    jika (iodine.is (input.value, json.parse (input.dataset.rules))! == true) {
      event.PreventDefault ();
      input.classlist.add ("tidak sah");
    }
  });
}
form.AddEventListener ("Hantar", onsubmit);
Salin selepas log masuk

Contoh asas ini tidak mempunyai keramahan pengguna. Ia tidak memberikan mesej ralat dan tidak mengemas kini secara dinamik.

Meningkatkan dengan alpine.js

Alpine.js meningkatkan pengalaman pengguna. Kami akan mengesahkan perubahan kabur atau input, memberikan maklum balas segera tanpa mengganggu input. Alpine.js dimasukkan melalui CDN:

<script src="https://cdn.jsdelivr.net/gh/alpinejs/alpine@v3.x.x/dist/alpine.min.js" defer></script>
Salin selepas log masuk

Atau, melalui Skypack:

 import alpinejs dari "https://cdn.skypack.dev/alpinejs";
Salin selepas log masuk

Kami akan menguruskan keadaan input (status status dan mesej ralat) dalam komponen Alpine.js menggunakan x-data . Fungsi mentakrifkan data komponen:

 Alpine.data ("bentuk", bentuk);
Alpine.start ();

bentuk fungsi () {
  kembali {
    Nama pengguna: {errormessage: '', kabur: palsu},
    E -mel: {ErrorMessage: '', kabur: palsu},
    Kata Laluan: {ErrorMessage: '', kabur: palsu},
    kata laluan: {errormessage: '', kabur: palsu},
    // ... (fungsi akan ditambah kemudian) ...
  };
}
Salin selepas log masuk

x-bind:class Menambah Kelas "Tidak Sah":

<input type="text" name="username" x-bind:class="{ 'invalid': username.errorMessage && username.blurred }" ...>
Salin selepas log masuk

Bertindak balas terhadap perubahan input

Pendengar acara mengemas kini keadaan komponen:

 // ... dalam fungsi 'bentuk' ...
Blur: fungsi (acara) {
  biarkan ele = event.target;
  Ini [ele.name] .blurred = true;
  biarkan peraturan = json.parse (ele.dataset.rules);
  Ini [ele.name] .errormessage = this.geterrormessage (ele.value, peraturan);
},
input: fungsi (peristiwa) {
  biarkan ele = event.target;
  biarkan peraturan = json.parse (ele.dataset.rules);
  Ini [ele.name] .errormessage = this.geterrormessage (ele.value, peraturan);
},
geterrormessage: fungsi (nilai, peraturan) {
  biarkan isvalid = iodine.is (nilai, peraturan);
  jika (isvalid! == true) {
    kembali iodine.geterrormessage (isvalid);
  }
  kembali '';
},
// ...
Salin selepas log masuk

Mesej ralat dipaparkan menggunakan x-show dan x-text :

<p x-show="username.errorMessage && username.blurred" x-text="username.errorMessage"></p>
Salin selepas log masuk

Pengendali acara @submit (dalam komponen Alpine) mengendalikan penyerahan borang:

 hantar: fungsi (acara) {
  biarkan input = [... ini. $ el.QuerySelectorAll ("input [data-peraturan]")];
  inputs.map ((input) => {
    jika (iodine.is (input.value, json.parse (input.dataset.rules))! == true) {
      event.PreventDefault ();
    }
  });
}
Salin selepas log masuk

Pengendalian ralat pelayan

Untuk mengendalikan kesilapan pelayan, kami akan menyimpannya dalam atribut data-server-errors dan menggunakan x-init untuk mengisi keadaan komponen:

<input type="text" name="username" data-server-errors='["Username already exists"]' ...>
Salin selepas log masuk

Fungsi init dalam komponen alpine akan mengendalikan ini:

 init: fungsi () {
  this.InputeLements = [... this. $ el.QuerySelectorAll ("input [data-rules]")]];
  this.InitdomData ();
},
initdomdata: fungsi () {
  this.InputeLements.Map ((ele) => {
    Ini [ele.name] = {
      ServerErrors: json.parse (ele.dataset.serverErrors),
      kabur: palsu
    };
  });
}
Salin selepas log masuk

Fungsi getErrorMessage dikemas kini untuk mengutamakan kesilapan pelayan:

 geterrormessage: fungsi (ele) {
  jika (ini [ele.name] .serverErrors.length> 0) {
    kembali ini [ele.name] .serverErrors [0];
  }
  // ... (selebihnya fungsi tetap sama) ...
}
Salin selepas log masuk

Mengendalikan input saling bergantung

Untuk input saling bergantung (contohnya, pengesahan kata laluan), kami akan mengemas kini semua mesej ralat pada setiap perubahan input. Kaedah addRule iodine mewujudkan peraturan tersuai:

 Iodine.addrule (
  "MatchingPassword",
  nilai => nilai === document.getElementById ("Kata Laluan"). Nilai
);
Iodine.messages.matchingpassword = "pengesahan kata laluan perlu dipadankan dengan kata laluan";
Salin selepas log masuk

Fungsi updateErrorMessages mengendalikan ini:

 UpdateRrormessages: Function () {
  this.InputeLements.Map ((ele) => {
    Ini [ele.name] .errormessage = this.geterrormessage (ele);
  });
},
Salin selepas log masuk

Fungsi getErrorMessage ditapis untuk hanya mengembalikan mesej jika input kabur:

 geterrormessage: fungsi (ele) {
  // ... (pemeriksaan ralat pelayan) ...
  const error = iodine.is (ele.value, json.parse (ele.dataset.rules));
  jika (error! == true && this [ele.name] .blurred) {
    kembali iodine.geterrormessage (ralat);
  }
  kembali "";
}
Salin selepas log masuk

Pendengar acara dipindahkan ke elemen bentuk induk, menggunakan focusout dan bukannya blur :

Salin selepas log masuk

Akhirnya, peralihan pudar ditambah untuk maklum balas visual:

<p x-show="username.errorMessage" x-text="username.errorMessage" x-transition:enter=""></p>
Salin selepas log masuk

Ini menghasilkan penyelesaian pengesahan bentuk reaktif, boleh diguna semula, dan cekap. Fungsi form yang disediakan boleh digunakan semula dalam pelbagai bentuk dengan mengkonfigurasi atribut HTML dengan sewajarnya.

Atas ialah kandungan terperinci Pengesahan bentuk ringan dengan alpine.js dan iodine.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1672
14
Tutorial PHP
1277
29
Tutorial C#
1257
24
Perbandingan pembekal bentuk statik Perbandingan pembekal bentuk statik Apr 16, 2025 am 11:20 AM

Mari kita cuba menyusun istilah di sini: "Penyedia Borang Statik." Anda membawa html anda

Bukti konsep untuk menjadikan sass lebih cepat Bukti konsep untuk menjadikan sass lebih cepat Apr 16, 2025 am 10:38 AM

Pada permulaan projek baru, kompilasi SASS berlaku dalam sekejap mata. Ini terasa hebat, terutamanya apabila ia dipasangkan dengan BrowserSync, yang dimuat semula

Berita Platform Mingguan: Atribut Memuat HTML, Spesifikasi ARIA Utama, dan Bergerak Dari IFRAME ke Shadow Dom Berita Platform Mingguan: Atribut Memuat HTML, Spesifikasi ARIA Utama, dan Bergerak Dari IFRAME ke Shadow Dom Apr 17, 2025 am 10:55 AM

Pada minggu ini, berita platform, Chrome memperkenalkan atribut baru untuk memuatkan, spesifikasi aksesibiliti untuk pemaju web, dan gerakan BBC

Beberapa tangan dengan elemen dialog HTML Beberapa tangan dengan elemen dialog HTML Apr 16, 2025 am 11:33 AM

Ini saya melihat elemen HTML untuk kali pertama. Saya telah menyedarinya untuk seketika, tetapi Haven &#039; t mengambilnya untuk putaran lagi. Ia mempunyai cukup keren dan

Kertas kerja Kertas kerja Apr 16, 2025 am 11:24 AM

Beli atau Membina adalah perdebatan klasik dalam teknologi. Membina barang sendiri mungkin berasa lebih murah kerana tidak ada item baris pada bil kad kredit anda, tetapi

Berita Platform Mingguan: Bookmarket Jarak Teks, Menunggu Tahap Teratas, Penunjuk Memuatkan AMP Baru Berita Platform Mingguan: Bookmarket Jarak Teks, Menunggu Tahap Teratas, Penunjuk Memuatkan AMP Baru Apr 17, 2025 am 11:26 AM

Pada minggu ini, roundup, sebuah bookmarklet yang berguna untuk memeriksa tipografi, menggunakan menunggu untuk mengamuk dengan cara modul JavaScript mengimport satu sama lain, ditambah Facebook &#039; s

Di manakah 'Langgan Podcast' pautan ke? Di manakah 'Langgan Podcast' pautan ke? Apr 16, 2025 pm 12:04 PM

Untuk sementara waktu, iTunes adalah anjing besar dalam podcasting, jadi jika anda mengaitkan "Langgan Podcast" untuk suka:

Pilihan untuk menganjurkan analisis berasaskan bukan JavaScript anda sendiri Pilihan untuk menganjurkan analisis berasaskan bukan JavaScript anda sendiri Apr 15, 2025 am 11:09 AM

Terdapat banyak platform analisis untuk membantu anda mengesan data pelawat dan penggunaan di laman web anda. Mungkin paling penting Google Analytics, yang digunakan secara meluas

See all articles