1$(document).ready(function() { 2 $("#paging").validate(); 3 4 // Untuk form surat memeriksa nomor surat secara remote/ajax 5 $("#validasi.form-surat").validate({ 6 ignore: '#wrapper-mandiri input[name=nomor]', 7 errorElement: "label", 8 errorClass: "error", 9 highlight:function (element){ 10 $(element).closest(".form-group").addClass("has-error"); 11 }, 12 unhighlight:function (element){ 13 $(element).closest(".form-group").removeClass("has-error"); 14 }, 15 errorPlacement: function (error, element) { 16 if (element.parent('.input-group').length) { 17 error.insertAfter(element.parent()); 18 } else if (element.hasClass('select2')) { 19 error.insertAfter(element.next('span')); 20 } else { 21 error.insertAfter(element); 22 } 23 }, 24 // https://www.bladephp.co/jquery-validation-remote-codeigniter 25 rules: { 26 url_surat: { 27 required: true 28 }, 29 nomor: { 30 required: true, 31 remote: { 32 url: $('#url_remote').val(), 33 type: "post", 34 data:{ 35 url: function() { 36 return $('#url_surat').val() 37 } 38 } 39 } 40 } 41 }, 42 messages: { 43 nomor: { 44 remote: "Nomor surat itu sudah digunakan", 45 }, 46 }, 47 success: function() { 48 csrf_semua_form(); 49 } 50 }); 51 52 // Untuk form surat masuk/keluar memeriksa nomor urut secara remote/ajax 53 $("#validasi.nomor-urut").validate({ 54 errorElement: "label", 55 errorClass: "error", 56 highlight:function (element){ 57 $(element).closest(".form-group").addClass("has-error"); 58 }, 59 unhighlight:function (element){ 60 $(element).closest(".form-group").removeClass("has-error"); 61 }, 62 errorPlacement: function (error, element) { 63 if (element.parent('.input-group').length) { 64 error.insertAfter(element.parent()); 65 } else if (element.hasClass('select2')) { 66 error.insertAfter(element.next('span')); 67 } else { 68 error.insertAfter(element); 69 } 70 }, 71 // https://www.bladephp.co/jquery-validation-remote-codeigniter 72 rules: { 73 nomor_urut: { 74 required: true, 75 remote: { 76 url: $('#url_remote').val(), 77 type: "post", 78 data:{ 79 nomor_urut_lama: function() { 80 return $('#nomor_urut_lama').val() 81 } 82 } 83 } 84 } 85 }, 86 messages: { 87 nomor_urut: { 88 remote: "Nomor urut itu sudah digunakan", 89 }, 90 }, 91 success: function() { 92 csrf_semua_form(); 93 } 94 }); 95 96 validate("#validasi"); 97 98 $("#validasi-proses").validate({ 99 ignore: ".ignore", 100 errorElement: "label", 101 errorClass: "error", 102 highlight:function (element){ 103 $(element).closest(".form-group").addClass("has-error"); 104 }, 105 unhighlight:function (element){ 106 $(element).closest(".form-group").removeClass("has-error"); 107 }, 108 errorPlacement: function (error, element) { 109 if (element.parent('.input-group').length) { 110 error.insertAfter(element.parent()); 111 element.parent().focus(); 112 } else if (element.hasClass('select2')) { 113 error.insertAfter(element.next('span')); 114 element.next('span').focus(); 115 } else { 116 error.insertAfter(element); 117 element.focus(); 118 } 119 }, 120 invalidHandler: function(e, validator){ 121 if(validator.errorList.length && $('#tabs').length) { 122 $('#tabs a[href="#' + $(validator.errorList[0].element).closest(".tab-pane").attr('id') + '"]').tab('show'); 123 } 124 }, 125 submitHandler: function(form) { 126 Swal.fire({ 127 title: 'Sedang Menyimpan', 128 allowOutsideClick: false, 129 allowEscapeKey: false,
130 showConfirmButton: false, 131 didOpen: () => { 132 Swal.showLoading() 133 } 134 }); 135 form.submit(); 136 } 137 }); 138 139 $("#mainform").validate({ 140 errorElement: "label", 141 errorClass: "error", 142 highlight:function (element){ 143 $(element).closest(".form-group").addClass("has-error"); 144 }, 145 unhighlight:function (element) { 146 $('.select2').on("select2:close", function (e) { 147 $(this).valid(); 148 }); 149 150 $(element).closest(".form-group").removeClass("has-error"); 151 }, 152 errorPlacement: function (error, element) { 153 if (element.parent('.input-group').length) { 154 error.insertAfter(element.parent()); 155 } else if (element.hasClass('select2')) { 156 error.insertAfter(element.next('span')); 157 } else { 158 error.insertAfter(element); 159 } 160 } 161 }); 162 163 $('.form-validasi').each(function(index, el){ 164 $(el).validate({ 165 errorElement: "label", 166 errorClass: "error", 167 highlight:function (element){ 168 $(element).closest(".form-group").addClass("has-error"); 169 }, 170 unhighlight:function (element){ 171 $(element).closest(".form-group").removeClass("has-error"); 172 }, 173 errorPlacement: function (error, element) { 174 if (element.parent('.input-group').length) { 175 error.insertAfter(element.parent()); 176 } else if (element.hasClass('select2')) { 177 error.insertAfter(element.next('span')); 178 } else { 179 error.insertAfter(element); 180 } 181 } 182 }); 183 }); 184 185 jQuery.validator.addMethod("nik", function(value, element) { 186 nik_valid = /^\d*$/.test(value) && (value.length == 16) && (value.indexOf('0') != 0); 187 return this.optional(element) || nik_valid; 188 }, "NIK harus bilangan 16 digit dan tidak boleh diawali 0"); 189 190 // TODO : Jika validasi no_kk sudah siap seperti nik sementara, silahkan gunakan validasi nik dengan pesan yg dinamis 191 jQuery.validator.addMethod("no_kk", function(value, element) { 192 no_kk_valid = /^\d*$/.test(value) && (value.length == 16) && (value.indexOf('0') != 0); 193 return this.optional(element) || no_kk_valid; 194 }, "Nomor KK harus bilangan 16 digit dan tidak boleh diawali 0"); 195 196 jQuery.validator.addMethod("angka", function(value, element) { 197 angka_valid = /^\d*$/.test(value); 198 return this.optional(element) || angka_valid; 199 }, "Harus Berisi Angka"); 200 201 jQuery.validator.addMethod("luas", function(value, element) { 202 luas_valid = /^\d+(\.\d+)*$/.test(value); 203 return this.optional(element) || luas_valid; 204 }, "Harus Berisi Angka dan untuk koma gunakan \"titik\""); 205 206 jQuery.validator.addMethod("nama", function(value, element) { 207 valid = /^[a-zA-Z '\.,\-]+$/.test(value); 208 return this.optional(element) || valid; 209 }, "Hanya boleh berisi karakter alpha, spasi, titik, koma, tanda petik dan strip"); 210
211 jQuery.validator.addMethod("nama_desa", function(value, element) { 212 valid = /^[a-zA-Z0-9 '\.,`\-\/\(\)]+$/.test(value); 213 return this.optional(element) || valid; 214 }, "Hanya boleh berisi karakter alpha, spasi, titik, koma, tanda petik, garis miring dan strip"); 215 216 jQuery.validator.addMethod("nama_suku", function(value, element) { 217 valid = /^[a-zA-Z ]+$/.test(value); 218 return this.optional(element) || valid; 219 }, "Hanya boleh berisi karakter alpha dan spasi"); 220 221 jQuery.validator.addMethod("alfanumerik", function(value, element) { 222 valid = /^[a-zA-Z0-9 ]+$/i.test(value); 223 return this.optional(element) || valid; 224 }, "Hanya boleh berisi karakter alfanumerik"); 225 226 jQuery.validator.addMethod("nama_terbatas", function(value, element) { 227 valid = /^[a-zA-Z0-9 \-]+$/i.test(value); 228 return this.optional(element) || valid; 229 }, "Hanya boleh berisi karakter alfanumerik, spasi dan strip"); 230 231 jQuery.validator.addMethod("nama_surat", function(value, element) { 232 valid = /^[a-zA-Z0-9 ()\-]+$/i.test(value); 233 return this.optional(element) || valid; 234 }, "Hanya boleh berisi karakter alfanumerik, spasi, strip, (, )"); 235 236 jQuery.validator.addMethod("nama_produk", function(value, element) { 237 valid = /^[a-zA-Z0-9()&_:=°% \-]+$/i.test(value); 238 return this.optional(element) || valid; 239 }, `Hanya boleh berisi karakter alfanumerik, spasi, strip, (, ), &, :, =, °, %`); 240 241 jQuery.validator.addMethod("nomor_sk", function(value, element) { 242 valid = /^[a-zA-Z0-9 \.\-\/]+$/i.test(value); 243 return this.optional(element) || valid; 244 }, "Hanya boleh berisi karakter alfanumerik, spasi, titik, garis miring dan strip"); 245 246 jQuery.validator.addMethod("alfanumerik_titik", function(value, element) { 247 valid = /^[a-zA-Z0-9\.]+$/i.test(value); 248 return this.optional(element) || valid; 249 }, "Hanya boleh berisi karakter alfanumerik dan titik"); 250 251 jQuery.validator.addMethod("alfanumerik_spasi", function(value, element) { 252 valid = /^[a-zA-Z0-9 ]+$/i.test(value); 253 return this.optional(element) || valid; 254 }, "Hanya boleh berisi karakter alfanumerik dan spasi"); 255 256 jQuery.validator.addMethod("bilangan_titik", function(value, element) { 257 valid = /^[0-9\.]+$/.test(value); 258 return this.optional(element) || valid; 259 }, "Hanya boleh berisi karakter numerik dan titik"); 260 261 jQuery.validator.addMethod("strip_tags", function(value, element) { 262 var strippedText = value.replace(/<\/?[^>]+(>|$)/g, ""); 263 return strippedText === value; 264 }, "Tidak boleh mengandung tag HTML"); 265 266 jQuery.validator.addMethod("judul", function(value, element) { 267 const valid = /^[a-zA-Z0-9()[\]&_:;=°%'".,/\- ]+$/i.test(value); 268 return this.optional(element) || valid; 269 }, "Hanya boleh berisi karakter alfanumerik, spasi, strip, titik, koma (,), [, ], &, :, ;, =, °, %, ', \", -, dan /"); 270 271 $('.bilangan_titik').each(function() { 272 $(this).rules("add", { 273 bilangan_titik: true, 274 }); 275 }); 276 277 jQuery.validator.addMethod("bilangan_spasi", function(value, element) { 278 valid = /^[0-9 ]+$/.test(value); 279 return this.optional(element) || valid; 280 }, "Hanya boleh berisi karakter numerik dan spasi"); 281 282 $('.bilangan_spasi').each(function() { 283 $(this).rules("add", 284 { 285 bilangan_spasi: true, 286 }); 287 }); 288 289 // Ketentuan kata sandi sesuai US National Institute of Standards and Technology (NIST) 290 //https://en.wikipedia.org/wiki/Password_policy#:~:text=Passwords%20must%20be%20at%20least,should%20be%20acceptable%20in%20passwords 291 jQuery.validator.addMethod("pwdLengthNist", function(value, element) { 292 valid = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9])(?!.*\s).{8,20}$/.test(value); 293 return this.optional(element) || valid; 294 }, "Harus 8 sampai 20 karakter dan sekurangnya berisi satu angka dan satu huruf besar dan satu huruf kecil dan satu karakter khusus"); 295 296 $('.pwdLengthNist').each(function() { 297 $(this).rules("add", 298 { 299 pwdLengthNist: true, 300 }); 301 }); 302 303 // Untuk donjo-app/views/man_user/manajemen_user_form.php di mana 'radiisi' berarti password tidak diubah 304 // Ketentuan kata sandi sesuai US National Institute of Standards and Technology (NIST) 305 jQuery.validator.addMethod("pwdLengthNist_atau_kosong", function(value, element) { 306 valid = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9])(?!.*\s).{8,20}$/.test(value); 307 return this.optional(element) || valid || value == 'radiisi'; 308 }, "Harus 8 sampai 20 karakter dan sekurangnya berisi satu angka dan satu huruf besar dan satu huruf kecil dan satu karakter khusus"); 309 310 jQuery.validator.addMethod("bilangan", function(value, element) { 311 valid = /^[0-9]+$/.test(value); 312 return this.optional(element) || valid; 313 }, "Hanya boleh berisi karakter numerik"); 314 315 jQuery.validator.addMethod("alamat", function(value, element) { 316 valid = /^[a-zA-Z0-9 '\.,\-\/]+$/.test(value); 317 return this.optional(element) || valid; 318 }, "Hanya boleh berisi karakter alpha, numerik, spasi, titik, koma, strip, tanda pet
318ik dan garis miring"); 319 320 jQuery.validator.addMethod("username", function(value, element) { 321 valid = /^[a-zA-Z0-9]{4,30}$/.test(value); 322 return this.optional(element) || valid; 323 }, "Username hanya boleh berisi karakter alpha, numerik dan terdiri dari 4 hingga 30 karakter"); 324 325 jQuery.validator.addMethod("telegram", function(value, element) { 326 valid = /^@[a-zA-Z0-9\_]{5,100}$/.test(value); 327 return this.optional(element) || valid; 328 }, "Username Telegram diawali @ dan berisi minimal 5 karakter alpha, numerik dan garis bawah"); 329 330 jQuery.validator.addMethod("pin_mandiri", function(value, element) { 331 angka_valid = /^(?=.*\d).{6,6}$/.test(value); 332 return this.optional(element) || angka_valid; 333 }, "Hanya boleh berisi 6 angka numerik"); 334 335 jQuery.validator.addMethod("ip_address", function(value, element) { 336 valid = /^([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4}|(\d{1,3}\.){3}\d{1,3}$/.test(value); 337 return this.optional(element) || valid; 338 }, "Isi IP address yang valid"); 339 340 jQuery.validator.addMethod("mac_address", function(value, element) { 341 valid = /^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/.test(value); 342 return this.optional(element) || valid; 343 }, "Isi Mac address yang valid"); 344 345 // Untuk tanggal lapor dan tanggal peristiwa 346 jQuery.validator.addMethod("tgl_lebih_besar", function(value, element, params) { 347 tgl_minimal = $(params).val().split("-"); 348 tgl_minimal = new Date(+tgl_minimal[2], tgl_minimal[1] - 1, +tgl_minimal[0]); 349 tgl_ini = value.split("-"); 350 tgl_ini = new Date(+tgl_ini[2], tgl_ini[1] - 1, +tgl_ini[0]); 351 if (tgl_ini >= tgl_minimal) 352 return true; 353 return false; 354 }, "Tanggal harus sama atau lebih besar dari tanggal minimal."); 355 356 jQuery.validator.addMethod("warna", function(value, element) { 357 valid = /^#[a-zA-Z0-9#]+$/i.test(value) || /^rgba[a-zA-Z0-9.,()]+$/i.test(value); 358 return this.optional(element) || valid; 359 }, `Hanya boleh berisi karakter alfanumerik, tagar, titik, koma, buka dan tutup kurung`); 360 361 // https://www.aspsnippets.com/questions/532641/Validation-Latitude-and-Longitude-using-Regular-Expression-in-jQuery/ 362 jQuery.validator.addMethod("lat", function(value, element) { 363 var regexLat = new RegExp('^(\\+|-)?(?:90(?:(?:\\.0{1,18})?)|(?:[0-9]|[1-8][0-9])(?:(?:\\.[0-9]{1,18})?))$'); 364 return this.optional(element) || regexLat.test(value); 365 }, `Isi lat tidak valid`); 366 367 // https://www.aspsnippets.com/questions/532641/Validation-Latitude-and-Longitude-using-Regular-Expression-in-jQuery/ 368 jQuery.validator.addMethod("lng", function(value, element) { 369 var regexLong = new RegExp('^(\\+|-)?(?:180(?:(?:\\.0{1,6})?)|(?:[0-9]|[1-9][0-9]|1[0-7][0-9])(?:(?:\\.[0-9]{1,18})?))$'); 370 return this.optional(element) || regexLong.test(value); 371 }, `Isi lng tidak valid`); 372 373 jQuery.validator.addMethod("telepon", function(value, element) { 374 return this.optional(element) || value.length > 9; 375 }, `Minimal 10 dan maksimal 20 karakter`); 376 377 jQuery.validator.addMethod("id_telegram", function(value, element) { 378 valid = /^[0-9]{5,10}$/.test(value); 379 return this.optional(element) || valid; 380 },`Minimal 5 dan maksimal 10 karakter dan harus angka`); 381}); 382 383function validate(elementClassId) { 384 $(elementClassId).validate({ 385 ignore: ".ignore", 386 errorElement: "label", 387 errorClass: "error", 388 highlight:function (element){ 389 $(element).closest(".form-group").addClass("has-error"); 390 }, 391 unhighlight:function (element){ 392 $(element).closest(".form-group").removeClass("has-error"); 393 }, 394 errorPlacement: function (error, element) { 395 if (element.parent('.input-group').length) { 396 error.insertAfter(element.parent()); 397 // element.parent().focus(); 398 } else if (element.hasClass('select2')) { 399 error.insertAfter(element.next('span')); 400 // element.next('span').focus(); 401 } else { 402 error.insertAfter(element); 403 // element.focus(); 404 } 405 }, 406 invalidHandler: function(e, validator){ 407 if(validator.errorList.length && $('#tabs').length) { 408 $('#tabs a[href="#' + $(validator.errorList[0].element).closest(".tab-pane").attr('id') + '"]').tab('show'); 409 } 410 }, 411 }); 412}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.