Mod10 Check tutorial
Mod
10 Check Example and Tutorial
|
SUM
|
||||||||||||||||
STEP 1
|
4
|
0
|
1
|
1
|
5
|
0
|
1
|
0
|
3
|
6
|
8
|
5
|
3
|
3
|
3
|
7
|
|
STEP 2
|
8
|
0
|
2
|
1
|
10
|
0
|
2
|
0
|
6
|
6
|
16
|
5
|
6
|
3
|
6
|
7
|
|
STEP 3
|
8
|
0
|
2
|
1
|
1+0
|
0
|
2
|
0
|
6
|
6
|
1+6
|
5
|
6
|
3
|
6
|
7
|
|
STEP 4
|
8
|
0
|
2
|
1
|
1
|
0
|
2
|
0
|
6
|
6
|
7
|
5
|
6
|
3
|
6
|
7
|
60
|
EXPLANATION
|
|||||||||||||||||
STEP 1
|
Write the no to be mod 10 checked
|
||||||||||||||||
STEP 2
|
Double
every 2nd digit from the Right last
|
||||||||||||||||
STEP 3
|
Sum=60 Add the double and make it single
digit and then add all the digit
|
||||||||||||||||
STEP 4
|
If
the result eg.60 is in muliples of 10 then its Valid.
|
Javascript For Credit Card Validation
function Mod10(ccNumb) {
// v2.0
var valid = "0123456789" // Valid digits
in a credit card number
var len = ccNumb.length; // The length
of the submitted cc number
var iCCN = parseInt(ccNumb); // integer of
ccNumb
var sCCN = ccNumb.toString(); // string of
ccNumb
sCCN = sCCN.replace(/^\s+|\s+$/g, ''); // strip spaces
var iTotal = 0;
// integer total set at zero
var bNum = true; // by default
assume it is a number
var
bResult = false; // by default
assume it is NOT a valid cc
var temp; // temp variable for parsing string
var calc; // used for calculation of each digit
// Determine if the ccNumb is in fact all numbers
for (var j = 0; j
< len; j++) {
temp = "" +
sCCN.substring(j, j + 1);
if (valid.indexOf(temp) == "-1") { bNum = false;
}
}
// if it is NOT a number, you can either alert to the
fact, or just pass a failure
if (!bNum) {
/*alert("Not a Number");*/
bResult = false;
bResult = false;
}
// Determine if it is the proper length
if ((len == 0) && (bResult)) {
// nothing, field is blank AND passed above # check
// nothing, field is blank AND passed above # check
bResult = false;
}
else {
// ccNumb is a number and the proper length - let's see if it is a valid card number
// ccNumb is a number and the proper length - let's see if it is a valid card number
if (len >= 15) { // 15 or 16 for
Amex or V/MC
for
(var i = len; i > 0; i--) { // LOOP
throught the digits of the card
calc = parseInt(iCCN) %
10; //
right most digit
calc =
parseInt(calc); //
assure it is an integer
iTotal += calc;
// running total of the card number as we loop - Do Nothing to first digit
// running total of the card number as we loop - Do Nothing to first digit
i--;
// decrement the count - move to the next digit in the card
// decrement the count - move to the next digit in the card
iCCN = iCCN / 10;
// subtracts right most digit from ccNumb
// subtracts right most digit from ccNumb
calc = parseInt(iCCN) %
10;
// NEXT right most digit
// NEXT right most digit
calc = calc * 2;
// multiply the digit by two
// multiply the digit by two
/* Instead of some screwy method of converting 16 to a string and then parsing 1
and 6 and then adding them to make 7,*/
// I use a simple switch statement to change the value of calc2 to 7
if 16 is the multiple.
switch
(calc) {
case 10: calc = 1; break; //5*2=10
& 1+0 = 1
case 12: calc = 3; break; //6*2=12
& 1+2 = 3
case 14: calc = 5; break; //7*2=14
& 1+4 = 5
case 16: calc = 7; break; //8*2=16
& 1+6 = 7
case 18: calc = 9; break; //9*2=18
& 1+8 = 9
default: calc = calc;//4*2=
8 & 8 = 8 -same for all lower numbers
}
iCCN = iCCN / 10; // subtracts
right most digit from ccNum
iTotal += calc; // running
total of the card number as we loop
} //
END OF LOOP
if ((iTotal % 10) == 0) { // check to see
if the sum Mod 10 is zero
bResult = true; // This IS (or could be) a valid credit card number.
} else {
bResult = false; // This could NOT be a valid credit card number
}
}
}
// change alert to on-page display or other indication
as needed.
// if(bResult) {
// alert("This IS a valid Credit Card
Number!");
// }
// if(!bResult){
// alert("This is NOT a valid Credit Card
Number!");
// }
return bResult; //
Return the results
}
No comments:
Post a Comment