ngacw-dpi
Version:
Validates input as Guatemalan DPI (Documento Personal de Identificación, something like a SSN)
3 lines (2 loc) • 790 B
JavaScript
/*! ngacw-dpi (v2.0.0) 12/26/2018 */
!function(r){function t(){return{restrict:"A",require:"?ngModel",link:n}}function n(r,t,n,i){t.attr("placeholder","xxxx-xxxxx-xxxx"),i.$validators.validdpi=function(r){return!!i.$isEmpty(r)||function(r){if(!r)return!0;var t=r.toString();if(!/^[0-9]{4}[\s\-]?[0-9]{5}[\s\-]?[0-9]{4}$/.test(t))return!1;t=t.replace(/\s/,"").split(/\-/).join("");var n=parseInt(t.substring(9,11),10),i=parseInt(t.substring(11,13),10),e=t.substring(0,8),s=parseInt(t.substring(8,9),10),u=[17,8,16,16,13,14,19,8,24,21,9,30,32,21,8,17,14,5,11,11,7,17];if(0===n||0===i)return!1;if(u.length<n)return!1;if(u[n-1]<i)return!1;for(var a=0,o=0;o<e.length;o++)a+=parseInt(e[o],10)*(o+2);return a%11===s}(r)}}window.angular.module("acw.directives").directive("dpi",t),t.$inject=[]}();