|
/*http://www.tamas.io/custom-angularjs-filter-to-determine-credit-card-type/*/ |
|
/*https://github.com/tamaspiros/angularjs-credit-card-validation/blob/master/index.html*/ |
|
angular.module('myApp', ['filters']); |
|
angular.module('filters', []). |
|
filter('validate', [function () { |
|
cardType="fa-credit-card-alt"; |
|
return function (ccnumber) { |
|
if (!ccnumber) { return ''; } |
|
ccnumber = ccnumber.toString().replace(/\s+/g, ''); |
|
var len = ccnumber.length; |
|
var cardType, valid; |
|
mul = 0, |
|
prodArr = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]], |
|
sum = 0; |
|
while (len--) { |
|
sum += prodArr[mul][parseInt(ccnumber.charAt(len), 10)]; |
|
mul ^= 1; |
|
} |
|
|
|
if (sum % 10 === 0 && sum > 0) { |
|
valid = "valid" |
|
} else { |
|
valid = "not valid" |
|
} |
|
|
|
if(/^(34)|^(37)/.test(ccnumber)) { |
|
cardType = "fa fa-cc-amex"; |
|
} |
|
if(/^(62)|^(88)/.test(ccnumber)) { |
|
cardType = "fa fa-credit-card-alt"; |
|
} |
|
if(/^30[0-5]/.test(ccnumber)) { |
|
cardType = "fa fa-cc-diners-club"; |
|
} |
|
if(/^(2014)|^(2149)/.test(ccnumber)) { |
|
cardType = "fa fa-cc-diners-club"; |
|
} |
|
if(/^36/.test(ccnumber)) { |
|
cardType = "fa fa-cc-diners-club"; |
|
} |
|
if(/^(6011)|^(622(1(2[6-9]|[3-9][0-9])|[2-8][0-9]{2}|9([01][0-9]|2[0-5])))|^(64[4-9])|^65/.test(ccnumber)) { |
|
cardType = "fa fa-cc-discover"; |
|
} |
|
if(/^35(2[89]|[3-8][0-9])/.test(ccnumber)) { |
|
cardType = "fa fa-cc-jcb"; |
|
} |
|
if(/^(6304)|^(6706)|^(6771)|^(6709)/.test(ccnumber)) { |
|
cardType = "fa fa-credit-card-alt"; |
|
} |
|
if(/^(5018)|^(5020)|^(5038)|^(5893)|^(6304)|^(6759)|^(6761)|^(6762)|^(6763)|^(0604)/.test(ccnumber)) { |
|
cardType = "fa fa-credit-card-alt"; |
|
} |
|
if(/^5[1-5]/.test(ccnumber)) { |
|
cardType = "fa fa-cc-mastercard"; |
|
} |
|
if (/^4/.test(ccnumber)) { |
|
cardType = "fa fa-cc-visa" |
|
} |
|
if (/^(4026)|^(417500)|^(4405)|^(4508)|^(4844)|^(4913)|^(4917)/.test(ccnumber)) { |
|
cardType = "fa fa-cc-visa" |
|
} |
|
return cardType; |
|
}; |
|
}]); |