Full version: jsB@nk » Utility » Credit Card Number Validation
URL: https://www.javascriptbank.com/credit-card-number-validation.html
Determine if a credit card number could be valid before submitting it for real-time online authentication. Based on ANSI X4.13, the LUHN formula, aka the Mod 10 algorithm is used to validate accurate credit card numbers. Heavily commented.
Full version: jsB@nk » Utility » Credit Card Number Validation
URL: https://www.javascriptbank.com/credit-card-number-validation.html
<script type="text/javascript"><!--/* Created by: David Leppek :: https://www.azcode.com/Mod10Basically, the alorithum takes each digit, from right to left and muliplies each seconddigit by two. If the multiple is two-digits long (i.e.: 6 * 2 = 12) the two digits ofthe multiple are then added together for a new number (1 + 2 = 3). You then add up the string of numbers, both unaltered and new values and get a total sum. This sum is thendivided by 10 and the remainder should be zero if it is a valid credit card. Hense thename Mod 10 or Modulus 10. */function Mod10(ccNumb) { // v2.0var valid = "0123456789" // Valid digits in a credit card numbervar len = ccNumb.length; // The length of the submitted cc numbervar iCCN = parseInt(ccNumb); // integer of ccNumbvar sCCN = ccNumb.toString(); // string of ccNumbsCCN = sCCN.replace (/^\s+|\s+$/g,''); // strip spacesvar iTotal = 0; // integer total set at zerovar bNum = true; // by default assume it is a numbervar bResult = false; // by default assume it is NOT a valid ccvar temp; // temp variable for parsing stringvar calc; // used for calculation of each digit// Determine if the ccNumb is in fact all numbersfor (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 failureif(!bNum){ /*alert("Not a Number");*/bResult = false;}// Determine if it is the proper length if((len == 0)&&(bResult)){ // 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 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 i--; // decrement the count - move to the next digit in the card iCCN = iCCN / 10; // subtracts right most digit from ccNumb calc = parseInt(iCCN) % 10 ; // NEXT right most digit calc = calc *2; // 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}// --></script><!-- This script downloaded from www.JavaScriptBank.com Come to view and download over 2000+ free javascript at www.JavaScriptBank.com-->
<form name="Form1"><table width="50%" border="0" cellspacing="0" cellpadding="5"> <tr> <td width="50%" align="right">Credit Card Number: </td> <td width="50%"> <input name="CreditCard" type="text" value="4012888888881881" size="18" maxlength="16" style="border: 1px solid #000098; padding: 3px;"> </td> </tr> <tr> <td colspan="2" align="center"> <input type="button" name="Button" style="color: #fff; background: #000098; font-weight:bold; border: solid 1px #000;" value="TEST CARD NUMBER" onClick="return Mod10(document.Form1.CreditCard.value);"> </td> </tr></table></form><!-- This script downloaded from www.JavaScriptBank.com Come to view and download over 2000+ free javascript at www.JavaScriptBank.com-->