Membuat Validasi Form dengan JQuery Validation

Membuat Validasi Form dengan JQuery Validation

Apa pentingnya sebuah validasi pada suatu form inputan? Pastinya sangat penting. Beberapa alasan mengapa validasi itu penting untuk dilakukan saat membuat inputan apalagi inputan di suatu halaman web adalah, pertama, tidak semua pengunjung memiliki pemahaman yang sama saat mengisi suatu form. Kasarnya, tidak semua pengunjung berhati mulia untuk mengisi form secara benar dan wajar. Ada saja pengunjung yang coba-coba. Untuk mengantisipasi hal tersebut tentu inputan harus dibatasi. Saya sering mencontohkan bahwa validasi juga dilakukan di sekitar kita, seperti pada mesin ATM dimana tempat memasukkan kartu dibuat tepat sesuai ukuran kartu ATM pada umumnya, mengapa tidak dibuat yang besar aja agar gampang masukin kartu ATM? Sederhana saja, kalo dibuat lubang yang terlalu besar, saya yakin akan sering ditemukan sendal jepit yang masuk ke sana. :D


Alasan kedua mengapa perlu adanya validasi adalah untuk menjamin bahwa data yang diproses atau disimpan memiliki format yang seragam (standar). Sebagai contoh, inputan berupa tanggal lahir harus tersimpan dengan format yang sama misalnya tanggal-bulan-tahun atau tahun-bulan-tanggal, sehingga setiap data yang masuk harus memenuhi format standar tersebut. Oleh karena itu, sebelum menyimpan data tanggal lahir harus dipastikan (divalidasi) bahwa data yang diinputkan adalah benar dan sesuai dengan format. Alasan ketiga mengapa perlu validasi adalah untuk menjamin keamanan (security) dari aplikasi web kita. Jangan sampai kelemahan validasi dalam suatu inputan dimanfaatkan oleh orang yang tidak bertanggung jawab (seperti cracker) untuk menyusup ke aplikasi kita, misalnya melalui celah SQL Injection. Kenyamanan pengguna (user satisfication) merupakan alasan lainnya mengapa perlu validasi. User adalah manusia biasa yang tidak luput dari kesalahan, misalnya dalam menginput alamat email bisa saja lupa tanda @, atau dalam inputan jumlah produk yang akan dibeli bisa aja user salah menginput dengan selain angka positif. Dengan validasi, dapat meningkatkan kenyamanan user dalam mengisi form inputan, apalagi jika inputan disertai informasi kesalahan inputan (notifikasi) yang jelas.
Dari sisi letaknya, validasi dapat dibagi menjadi dua, yaitu validasi di sisi server dan validasi di sisi client. Validasi di sisi server biasanya dilakukan setelah form di-submit (dikirim) dan menggunakan bahasa pemrograman sisi server seperti PHP, JSP dan ASP. Sedangkan validasi di sisi client dapat dilakukan sebelum data dari form inputan dikirim ke server. Validasi di client umumnya dilakukan dengan Javascript dan atribut HTML. Pada tutorial jquery kali ini, akan dijelaskan step by step bagaimana melakukan validasi form di sisi client dengan menggunakan library javascript JQuery dan plugin JQuery Validation.

Berikut ini step by step membuat validasi form dengan JQuery Validation.

#1. Siapkan form inputan yang akan divalidasi

Sebagai contoh form inputan sederhana, buatlah dengan HTML form berikut ini:

Contoh Form Inputan Data Mahasiswa
Untuk membuat form inputan diatas, berikut ini script HTML-nya. Ketik dan simpan dalam file berekstensi .html. Action dari form arahkan ke halaman proses.php.
Code block   
  1. <html>
  2. <head>
  3. <title>Validasi Form dengan JQuery Validation - Achmatim.Net</title>
  4. <style type="text/css">
  5. .labelfrm {
  6. display:block;
  7. font-size:small;
  8. margin-top:5px;
  9. } .error { font-size:small; color:red; }
  10. </style>
  11. </head>
  12. <body>
  13. <h1>Input Data Mahasiswa</h1>
  14. <form action="proses.php" method="post" id="frm-mhs">
  15. <label for="nim" class="labelfrm">NIM: </label>
  16. <input type="text" name="nim" id="nim" maxlength="10" size="15"/>
  17. <label for="nama" class="labelfrm">NAMA: </label>
  18. <input type="text" name="nama" id="nama" size="30"/>
  19. <label for="alamat" class="labelfrm">ALAMAT: </label>
  20. <textarea name="alamat" id="alamat" cols="40" rows="4"></textarea>
  21. <label for="tgl" class="labelfrm">TANGGAL LAHIR: </label>
  22. <input type="text" name="tgl" id="tgl" maxlength="10" size="15"/>
  23. <label for="umur" class="labelfrm">UMUR: </label>
  24. <input type="text" name="umur" id="umur" maxlength="3" size="7"/>
  25. <label for="email" class="labelfrm">ALAMAT EMAIL: </label>
  26. <input type="text" name="email" id="email" size="50"/>
  27. <label for="situs" class="labelfrm">ALAMAT SITUS: </label>
  28. <input type="text" name="situs" id="situs" size="50"/>
  29. <label for="pass1" class="labelfrm">PASSWORD: </label>
  30. <input type="password" name="pass1" id="pass1" size="15"/>
  31. <label for="pass2" class="labelfrm">ULANGI PASSWORD: </label>
  32. <input type="password" name="pass2" id="pass2" size="15"/>
  33. <label for="submit" class="labelfrm">&nbsp;</label>
  34. <input type="submit" name="Submit" value="Submit"/>
  35. </form>
  36. </body>
  37. </html>

#2. Sertakan library JQuery dan Plugin JQuery Validation

Library yang diperlukan ada 2 (dua) yaitu library core JQuery yang dapat didownload di situs http://code.jquery.com dan plugin JQuery Validation yang dapat didownload dari situs resminya di http://bassistance.de/jquery-plugins/jquery-plugin-validation/. Untuk menyertakan library tersebut ke dalam form yang sudah kita buat sebelumnya, tambahkan dua baris perintah berikut ini di antara tag <head> (diasumsikan bahwa kedua plugin tersimpan di folder /jquery).
<script type="text/javascript" src="jquery/jquery.min.js"></script>
<script type="text/javascript" src="jquery/jquery.validate.js"></script>

#3. Tentukan aturan / rule validasi

Selanjutnya yang harus dilakukan adalah membuat aturan atau rule validasi. Hal ini penting untuk dilakukan sebelum menerapkan aturan tersebut ke dalam suatu form. Berikut ini beberapa contoh aturan yang akan saya terapkan terhadap form di atas:
  1. Semua field inputan yang harus diisi (required)
  2. Inputan NIM hanya boleh diisi 10 digit angka (tidak boleh diisi huruf)
  3. Inputan TANGGAL LAHIR diisi dengan format DD/MM/YYYY
  4. Inputan UMUR diisi dengan angka antara 0-100
  5. Inputan ALAMAT EMAIL diisi dengan format penulisan email.
  6. Inputan ALAMAT SITUS diisi dengan format penulisan situs.
  7. Inputan PASSWORD dan ULANGI PASSWORD harus sama.

#4. Terapkan aturan / rule validasi

Untuk menerapkan aturan / rules validasi yang telah kita tentukan, panggil fungsi validate() saat halaman pertama kali dimunculkan. Di dalam fungsi validate() kita dapat membuat aturan-aturan di atas. Sebagai langkah awal, tambahkan potongan script berikut ini di antara tag <head>
Code block   
  1. <script type="text/javascript">
  2. $(document).ready(function() {
  3. $('#frm-mhs').validate();
  4. });
  5. </script>
Perhatikan potongan script di atas. Fungsi validate() harus diterapkan pada form, kita dapat menggunakan selector ID seperti pada script di atas. #frm-mhs merupakan ID dari form inputan yang sudah dibuat sebelumnya.
Selanjutnya kita akan menerapkan aturan validasi satu per satu.

Aturan 1: Semua field inputan yang harus diisi (required)

Untuk menerapkan aturan suatu inputan yang harus diisi (required), cara paling gampang adalah dengan menambahkan class “required” pada setiap inputan yang akan dikenakan aturan tersebut. Contohnya pada field NIM sebagai berikut.
<input type="text" name="nim" id="nim" maxlength="10" size="15" class="required"/>
Lakukan hal yang sama untuk semua tag inputan.

Aturan 2: Inputan NIM hanya boleh diisi 10 digit angka (tidak boleh diisi huruf)

Untuk aturan yang kedua ini, dapat dirinci menjadi 3 rule yaitu tidak boleh huruf (digits), panjang minimal isian adalah 10 digit dan panjang maksimal juga 10 digit. Kita dapat menambahkan rule pada pemanggilan fungsi validate() sehingga berubah menjadi sebagai berikut:
Code block   
  1. $('#frm-mhs').validate({
  2. rules: {
  3. nim : {
  4. digits: true,
  5. minlength:10,
  6. maxlength:10
  7. }
  8. }
  9. });

Aturan 3: Inputan TANGGAL LAHIR diisi dengan format DD/MM/YYYY

Untuk aturan yang ketiga yaitu mengenai format inputan tanggal lahir. Kita dapat menggunakan rule bawaan date:true jika format yang diinginkan adalah MM/DD/YYYY atau YYYY-MM-DD. Namun dalam rule diatas, diinginkan format tanggalnya adalah DD/MM/YYYY sehingga kita perlu membuat fungsi validator sendiri.
Perhatikan fungsi indonesianDate() beserta penerapannya berikut ini:
Code block   
  1. $(document).ready(function() {
  2. $('#frm-mhs').validate({
  3. rules: {
  4. nim : {
  5. digits: true,
  6. minlength:10,
  7. maxlength:10
  8. },
  9. tgl: {
  10. indonesianDate:true
  11. }
  12. }
  13. });
  14. });
  15. $.validator.addMethod(
  16. "indonesianDate",
  17. function(value, element) {
  18. // put your own logic here, this is just a (crappy) example
  19. return value.match(/^\d\d?\/\d\d?\/\d\d\d\d$/);
  20. },
  21. "Please enter a date in the format DD/MM/YYYY"
  22. );
referensi fungsi: stackeoverflow.

Aturan 4: Inputan UMUR diisi dengan angka antara 0-100

Untuk aturan ke-4, kita dapat menggunakan fungsi bawaan range serta batasan inputan berupa angka (digits). Jadi, tambahkan rule untuk inputan umur.
Code block   
  1. umur: {
  2. digits: true,
  3. range: [0, 100]
  4. }

Aturan 5: Inputan ALAMAT EMAIL diisi dengan format penulisan email.

Untuk aturan yang ke-5, JQuery validation sudah menyediakan fungsi email. Dapat ditambahkan langsung di tag inputannya (seperti aturan 1), atau ditambahkan rule email: true.

Aturan 6: Inputan ALAMAT SITUS diisi dengan format penulisan situs.

Untuk aturan ke-6 juga sudah tersedia fungsinya, yaitu url, dan dapat ditambahkan di tag inputan atau rule tersendiri.

Aturan 7: Inputan PASSWORD dan ULANGI PASSWORD harus sama.

Aturan yang terakhir terkait dengan validasi bahwa password harus sama antara 2 field inputan. Untuk hal tersebut, sudah tersedia fungsi equalsTo. Rule validasi setelah ditambahkan aturan 4, 5, 6 dan 7 adalah sbb:
Code block   
  1. $('#frm-mhs').validate({
  2. rules: {
  3. nim : {
  4. digits: true,
  5. minlength:10,
  6. maxlength:10
  7. },
  8. tgl: {
  9. indonesianDate:true
  10. },
  11. umur: {
  12. digits: true,
  13. range: [0, 100]
  14. },
  15. email: {
  16. email: true
  17. },
  18. situs: {
  19. url: true
  20. },
  21. pass2: {
  22. equalTo: "#pass1"
  23. }
  24. }
  25. });

Mengganti Pesan Kesalahan

Salah satu kelebihan plugin JQuery Validation adalah kita dapat dengan mudah mengganti pesan kesalahan yang akan ditampilkan jika aturan validasi tidak terpenuhi. Defaultnya pesan kesalahan dalam bahasa inggris, kita dapat menggantinya dengan mudah dengan menambahkan method messages. Berikut ini contohnya:
Code block   
  1. $('#frm-mhs').validate({
  2. rules: {
  3. nim : {
  4. digits: true,
  5. minlength:10,
  6. maxlength:10
  7. },
  8. tgl: {
  9. indonesianDate:true
  10. },
  11. umur: {
  12. digits: true,
  13. range: [0, 100]
  14. },
  15. email: {
  16. email: true
  17. },
  18. situs: {
  19. url: true
  20. },
  21. pass2: {
  22. equalTo: "#pass1"
  23. }
  24. },
  25. messages: {
  26. nim: {
  27. required: "Kolom nim harus diisi",
  28. minlength: "Kolom nim harus terdiri dari 10 digit",
  29. maxlength: "Kolom nim harus terdiri dari 10 digit"
  30. },
  31. email: {
  32. required: "Alamat email harus diisi",
  33. email: "Format email tidak valid"
  34. },
  35. pass2: {
  36. equalTo: "Password tidak sama"
  37. }
  38. }
  39. });

Form Inputan yang Sudah Ditambahkan Validasi
Mudah bukan? Selamat mencoba dan semoga bermanfaat.

Demo dan Download

Beberapa Pesan error yang dapat digunakan

 required: "Field Tidak Boleh Kosong.",
 email: "Isikan Data Email Valid.",
 url: "URL Tidak Valid.",
 date: "Format Tanggal Salah",
 dateISO: "Please enter a valid date (ISO).",
 number: "Isikan angka yang valid.",
 digits: "Please enter only digits.",
 creditcard: "Please enter a valid credit card number.",
 equalTo: "Please enter the same value again.",
 maxlength: $.validator.format("Jumlah maksimal {0} karakter."),
 minlength: $.validator.format("Jumlah minimal {0} karakter."),
 rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),
 range: $.validator.format("Please enter a value between {0} and {1}."),
 max: $.validator.format("Please enter a value less than or equal to {0}."),
 min: $.validator.format("Please enter a value greater than or equal to {0}.")

sumber: http://achmatim.net/2012/05/22/membuat-validasi-form-dengan-jquery-validation/

No comments:

Post a Comment