Валидация ИНН
Добрый день. Подскажите пожалуйста кто нибудь понимает как работает данный код, какие два параметра надо в него передать, что он сработал?
Не могу разобраться. Образец взял с github https://github.com/Kholenkov/js-data...-validation.js function validateInn(inn, error) { var result = false; if (typeof inn === 'number') { inn = inn.toString(); } else if (typeof inn !== 'string') { inn = ''; } if (!inn.length) { error.code = 1; error.message = 'ИНН пуст'; } else if (/[^0-9]/.test(inn)) { error.code = 2; error.message = 'ИНН может состоять только из цифр'; } else if ([10, 12].indexOf(inn.length) === -1) { error.code = 3; error.message = 'ИНН может состоять только из 10 или 12 цифр'; } else { var checkDigit = function (inn, coefficients) { var n = 0; for (var i in coefficients) { n += coefficients[i] * inn[i]; } return parseInt(n % 11 % 10); }; switch (inn.length) { case 10: var n10 = checkDigit(inn, [2, 4, 10, 3, 5, 9, 4, 6, 8]); if (n10 === parseInt(inn[9])) { result = true; } break; case 12: var n11 = checkDigit(inn, [7, 2, 4, 10, 3, 5, 9, 4, 6, 8]); var n12 = checkDigit(inn, [3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8]); if ((n11 === parseInt(inn[10])) && (n12 === parseInt(inn[11]))) { result = true; } break; } if (!result) { error.code = 4; error.message = 'Неправильное контрольное число'; } } return result; } |
Посмотрите тесты для этой функции
https://github.com/Kholenkov/js-data...ation-tests.js |
Часовой пояс GMT +3, время: 21:48. |