Apa itu Validasi jQuery Unobtrusive?

148

Saya tahu apa itu plugin Validasi jQuery. Saya tahu perpustakaan Validasi jQuery Unobtrusive dibuat oleh Microsoft dan disertakan dalam kerangka ASP.NET MVC. Tetapi saya tidak dapat menemukan satu sumber online yang menjelaskan apa itu. Apa perbedaan antara pustaka Validasi jQuery standar dan versi "tidak mencolok"?

pengguna1438940
sumber
2
validasi yang tidak mencolok akan menambah atribut data-val -... dalam HTML, sehingga Anda dapat membaca validasinya bahkan di sumber HTML.
Preben Huybrechts
3
Saya yakin jawaban untuk pertanyaan Anda dijelaskan di sini: bradwilson.typepad.com/blog/2010/10/… Dia menjelaskan perbedaan antara apa yang terjadi ketika Unobtrusive hidup atau mati.
Tommy

Jawaban:

123

Brad Wilson memiliki beberapa artikel hebat tentang validasi yang tidak mencolok dan tidak mencolok .
Ini juga ditampilkan dengan sangat baik dalam video Pluralsight ini di bagian "AJAX dan JavaScript".

Pada dasarnya, ini hanya validasi Javascript yang tidak mencemari kode sumber Anda dengan kode validasinya sendiri . Ini dilakukan dengan memanfaatkan data-atribut dalam HTML.

bertl
sumber
Bisakah Anda memberi tahu kami perbaikan yang dilakukan di mvc3 untuk validasi yang tidak mengganggu?
wwcdwdcw
Tautan ke video terputus.
Misha Moroshko
Terima kasih @MishaMoroshko untuk menunjukkannya. Saya tidak dapat menemukan alternatif di Pluralsight untuk saat ini, jadi saya menghapus tautannya. Saya akan mengedit posting lagi segera setelah saya memiliki penggantinya.
bertl
Beberapa contoh kode akan menyenangkan. Karena balasan Anda tidak terlalu membantu, kebanyakan orang datang ke sini untuk mencari solusi cepat dan contoh kode, bukan tautan ke artikel, mereka dapat rusak seiring waktu, mereka umumnya bagus sebagai referensi setelah Anda melihat contoh kode. Saya lebih suka 2 jawaban berikutnya.
Owen
107

Dengan cara yang tidak mencolok:

  • Anda tidak perlu memanggil metode validate ().
  • Anda menentukan persyaratan menggunakan atribut data (data-val, data-diperlukan, dll.)

Contoh Validasi Jquery :

<input type="text" name="email" class="required">
<script>
        $(function () {
            $("form").validate();
        });
</script>

Contoh Jquery Validate Unobtrusive :

<input type="text" name="email" data-val="true" 
data-val-required="This field is required.">  

<div class="validation-summary-valid" data-valmsg-summary="true">
    <ul><li style="display:none"></li></ul>
</div>
James Lawruk
sumber
4
Terima kasih, saya mencoba Ctrl-F untuk menemukan panggilan valdiate () dalam beberapa kode yang harus saya kerjakan. Bertanya-tanya mengapa saya tidak dapat menemukannya
bio595
2
Ya, "tidak mencolok" tampaknya menjadi eufemisme untuk "tidak dapat ditemukan" di sini.
ReactingToAngularVues
18

Untuk klarifikasi, berikut adalah contoh yang lebih terperinci yang menunjukkan Validasi Formulir menggunakan jQuery Validation Unobtrusive.

Keduanya menggunakan JavaScript berikut dengan jQuery:

  $("#commentForm").validate({
    submitHandler: function(form) {
      // some other code
      // maybe disabling submit button
      // then:
      alert("This is a valid form!");
//      form.submit();
    }
  });

Perbedaan utama antara kedua plugin adalah atribut yang digunakan untuk setiap pendekatan.

Validasi jQuery

Cukup gunakan atribut berikut:

  • Setel jika diperlukan
  • Setel jenis untuk pemformatan yang benar (email, dll.)
  • Tetapkan atribut lain seperti ukuran (panjang min, dll.)

Ini formulirnya ...

<form id="commentForm">
  <label for="form-name">Name (required, at least 2 characters)</label>
  <input id="form-name" type="text" name="form-name" class="form-control" minlength="2" required>
  <input type="submit" value="Submit">
</form>

Validasi jQuery Tidak Mengganggu

Atribut data berikut diperlukan:

  • data-msg-required = "Ini wajib diisi."
  • data-rule-required = "true / false"

Ini formulirnya ...

<form id="commentForm">
  <label for="form-x-name">Name (required, at least 2 characters)</label>
  <input id="form-x-name" type="text" name="name" minlength="2" class="form-control" data-msg-required="Name is required." data-rule-required="true">
  <input type="submit" value="Submit">
</form>

Berdasarkan salah satu dari contoh ini, jika bidang formulir yang diperlukan telah diisi, dan mereka memenuhi kriteria atribut tambahan, maka pesan akan muncul memberitahukan bahwa semua bidang formulir divalidasi. Kalau tidak, akan ada teks di dekat bidang formulir menyinggung yang menunjukkan kesalahan.

Referensi: - Validasi jQuery: https://jqueryvalidation.org/documentation/

Richard Nalezynski
sumber
7

jQuery Validation Unobtrusive Native adalah kumpulan ekstensi pembantu ASP.Net MVC HTML. Ini menggunakan dukungan asli jQuery Validation untuk validasi yang didorong oleh atribut data HTML 5. Microsoft mengirimkan jquery.validate.unobtrusive.js kembali dengan MVC 3. Ini memberikan cara untuk menerapkan validasi model data ke sisi klien menggunakan kombinasi jQuery Validation dan atribut data HTML 5 (itulah bagian "tidak mencolok").

bimal
sumber