| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 
 | <script language="javascript">
<!-- 
function Mod10(ccNumb) { 
var valid = "0123456789";
var len = ccNumb.length; 
var iCCN = parseInt(ccNumb); 
var sCCN = ccNumb.toString();
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; 
} 
 
// 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) { 
 
} 
if(!bResult){ 
alert("Le numero de carte bancaire saisi n'est pas valide !");
} 
return bResult; // Return the results 
} 
 
function verifChamp(champ) {
if(event.keyCode>=48 && event.keyCode<=57 && champ.value.length<=15 || event.keyCode == 8 || event.keyCode == 13 || event.keyCode == 18 || event.keyCode == 9 || event.keyCode == 91) {
return true;
} else {
return false;
}
}
//-->
</script>
<form onsubmit="return Mod10(document.form.cb.value)" name="form">
<input type="text" size="15" name="cb" onkeydown="return verifChamp(this)">
<input type="submit" onclick="return Mod10(this.form.cb.value)" value="OK">
</form> |