46 lines
1.1 KiB
JavaScript
46 lines
1.1 KiB
JavaScript
/* eslint-disable func-names */
|
|
/* Validator pesel */
|
|
jQuery.validator.addMethod(
|
|
"pesel",
|
|
function(value, element) {
|
|
const reg = /^[0-9]{11}$/;
|
|
let sum;
|
|
|
|
if (reg.test(value) === false) {
|
|
return this.optional(element) || false;
|
|
}
|
|
const dig = `${value}`.split("");
|
|
sum =
|
|
(1 * parseInt(dig[0], 10) +
|
|
3 * parseInt(dig[1], 10) +
|
|
7 * parseInt(dig[2], 10) +
|
|
9 * parseInt(dig[3], 10) +
|
|
1 * parseInt(dig[4], 10) +
|
|
3 * parseInt(dig[5], 10) +
|
|
7 * parseInt(dig[6], 10) +
|
|
9 * parseInt(dig[7], 10) +
|
|
1 * parseInt(dig[8], 10) +
|
|
3 * parseInt(dig[9], 10)) %
|
|
10;
|
|
|
|
if (sum === 0) {
|
|
sum = 10;
|
|
}
|
|
|
|
const day = parseInt(`${dig[4]}${dig[5]}`, 10);
|
|
if (day < 1 || day > 31) {
|
|
return this.optional(element) || false;
|
|
}
|
|
|
|
sum = 10 - sum;
|
|
|
|
return this.optional(element) || parseInt(dig[10], 10) === sum;
|
|
},
|
|
"Proszę wpisać poprawny numer PESEL"
|
|
);
|
|
|
|
/* Pesel validator */
|
|
jQuery.validator.addClassRules("js-validation-pesel", {
|
|
pesel: true,
|
|
});
|