[JavaScript] JavaScript验证各种信用卡号码是否合法的代码 →→→→→进入此内容的聊天室

来自 , 2019-06-05, 写在 JavaScript, 查看 105 次.
URL http://www.code666.cn/view/42d02bd0
  1. <script src="js/WebUIValidation.js" type="text/javascript"></script>
  2.     <Script LANGUAGE="JavaScript" type="text/javascript">
  3.     <!-- Begin
  4.     var Cards = new makeArray(8);
  5.     Cards[0] = new CardType("MasterCard", "51,52,53,54,55", "16");
  6.     var MasterCard = Cards[0];
  7.     Cards[1] = new CardType("VisaCard", "4", "13,16");
  8.     var VisaCard = Cards[1];
  9.     Cards[2] = new CardType("AmExCard", "34,37", "15");
  10.     var AmExCard = Cards[2];
  11.     Cards[3] = new CardType("DinersClubCard", "30,36,38", "14");
  12.     var DinersClubCard = Cards[3];
  13.     Cards[4] = new CardType("DiscoverCard", "6011", "16");
  14.     var DiscoverCard = Cards[4];
  15.     Cards[5] = new CardType("enRouteCard", "2014,2149", "15");
  16.     var enRouteCard = Cards[5];
  17.     Cards[6] = new CardType("JCBCard", "3088,3096,3112,3158,3337,3528", "16");
  18.     var JCBCard = Cards[6];
  19.     var LuhnCheckSum = Cards[7] = new CardType();
  20.  
  21.     /*************************************************************************/
  22.     CheckCardNumber(form)
  23.     function called when users click the "check" button.
  24.     /*************************************************************************/
  25.     function CheckCardNumber(form) {
  26.     var tmpyear;
  27.     //if (form.CardNumber.value.length == 0) {
  28.     //alert("Please enter the CardNumber");
  29.    // form.CardNumber.focus();
  30.     //return false;
  31.     //}
  32.     if(form.ExpMon.value.length==0)
  33.     {
  34.      alert("Please enter the Expiration Month");
  35.      form.ExpMon.focus();
  36.      return false;
  37.     }
  38.     if(form.ExpMon.value<1|| form.ExpMon.value>12)
  39.     {
  40.       alert("The Expiration Month is not valid.");
  41.       return false;
  42.     }
  43.     if (form.ExpYear.value.length == 0)
  44.     {
  45.         alert("Please enter the Expiration Year.");
  46.         form.ExpYear.focus();
  47.         return false;
  48.     }
  49.     if (form.ExpYear.value > 96)
  50.     tmpyear = "19" + form.ExpYear.value;
  51.     else if (form.ExpYear.value < 21)
  52.     tmpyear = "20" + form.ExpYear.value;
  53.     else
  54.     {
  55.     alert("The Expiration Year is not valid.");
  56.     return false;
  57.     }
  58.    
  59.     tmpmonth = form.ExpMon.value;
  60.     // The following line doesn't work in IE3, you need to change it
  61.     // to something like "(new CardType())...".
  62.     // if (!CardType().isExpiryDate(tmpyear, tmpmonth)) {
  63.     if (!(new CardType()).isExpiryDate(tmpyear, tmpmonth)) {
  64.     alert("This card has already expired.");
  65.     return false;
  66.     }
  67.     card = form.CardType.options[form.CardType.selectedIndex].value;
  68.     var retval = eval(card + ".checkCardNumber(/"" + form.CardNumber.value +
  69.    "/", " + tmpyear + ", " + tmpmonth + ");");
  70.     cardname = "";
  71.     if (retval)
  72.      return true;
  73.     else {
  74.     // The cardnumber has the valid luhn checksum, but we want to know which
  75.     // cardtype it belongs to.
  76.                 for (var n = 0; n < Cards.size; n++)
  77.                  {
  78.                     if (Cards[n].checkCardNumber(form.CardNumber.value, tmpyear, tmpmonth))
  79.                          {
  80.                             cardname = Cards[n].getCardType();
  81.                             break;
  82.                          }
  83.                 }
  84.                 if (cardname.length > 0) {
  85.                 alert("This looks like a " + cardname + " number, not a " + card + " number.");
  86.                 return false;
  87.          }
  88.    // else
  89.    // {
  90.               //  alert("This card number is not valid.");
  91.               //  return false;
  92.    
  93.     // }
  94.  
  95.    }
  96.  
  97. }
  98.     /*************************************************************************/
  99.     Object CardType([String cardtype, String rules, String len, int year,
  100.                                             int month])
  101.     cardtype    : type of card, eg: MasterCard, Visa, etc.
  102.     rules       : rules of the cardnumber, eg: "4", "6011", "34,37".
  103.     len         : valid length of cardnumber, eg: "16,19", "13,16".
  104.     year        : year of expiry date.
  105.     month       : month of expiry date.
  106.     eg:
  107.     var VisaCard = new CardType("Visa", "4", "16");
  108.     var AmExCard = new CardType("AmEx", "34,37", "15");
  109.     /*************************************************************************/
  110.     function CardType() {
  111.     var n;
  112.     var argv = CardType.arguments;
  113.     var argc = CardType.arguments.length;
  114.  
  115.     this.objname = "object CardType";
  116.  
  117.     var tmpcardtype = (argc > 0) ? argv[0] : "CardObject";
  118.     var tmprules = (argc > 1) ? argv[1] : "0,1,2,3,4,5,6,7,8,9";
  119.     var tmplen = (argc > 2) ? argv[2] : "13,14,15,16,19";
  120.  
  121.     this.setCardNumber = setCardNumber;  // set CardNumber method.
  122.     this.setCardType = setCardType;  // setCardType method.
  123.     this.setLen = setLen;  // setLen method.
  124.     this.setRules = setRules;  // setRules method.
  125.     this.setExpiryDate = setExpiryDate;  // setExpiryDate method.
  126.  
  127.     this.setCardType(tmpcardtype);
  128.     this.setLen(tmplen);
  129.     this.setRules(tmprules);
  130.     if (argc > 4)
  131.     this.setExpiryDate(argv[3], argv[4]);
  132.  
  133.     this.checkCardNumber = checkCardNumber;  // checkCardNumber method.
  134.     this.getExpiryDate = getExpiryDate;  // getExpiryDate method.
  135.     this.getCardType = getCardType;  // getCardType method.
  136.     this.isCardNumber = isCardNumber;  // isCardNumber method.
  137.     this.isExpiryDate = isExpiryDate;  // isExpiryDate method.
  138.     this.luhnCheck = luhnCheck;// luhnCheck method.
  139.     return this;
  140.     }
  141.  
  142.     /*************************************************************************/
  143.     boolean checkCardNumber([String cardnumber, int year, int month])
  144.     return true if cardnumber pass the luhncheck and the expiry date is
  145.     valid, else return false.
  146.     /*************************************************************************/
  147.     function checkCardNumber() {
  148.     var argv = checkCardNumber.arguments;
  149.     var argc = checkCardNumber.arguments.length;
  150.     var cardnumber = (argc > 0) ? argv[0] : this.cardnumber;
  151.     var year = (argc > 1) ? argv[1] : this.year;
  152.     var month = (argc > 2) ? argv[2] : this.month;
  153.  
  154.     this.setCardNumber(cardnumber);
  155.     this.setExpiryDate(year, month);
  156.  
  157.     if (!this.isCardNumber())
  158.     return false;
  159.     if (!this.isExpiryDate())
  160.     return false;
  161.  
  162.     return true;
  163.     }
  164.     /*************************************************************************/
  165.     String getCardType()
  166.     return the cardtype.
  167.     /*************************************************************************/
  168.     function getCardType() {
  169.     return this.cardtype;
  170.     }
  171.     /*************************************************************************/
  172.     String getExpiryDate()
  173.     return the expiry date.
  174.     /*************************************************************************/
  175.     function getExpiryDate() {
  176.     return this.month + "/" + this.year;
  177.     }
  178.     /*************************************************************************/
  179.     boolean isCardNumber([String cardnumber])
  180.     return true if cardnumber pass the luhncheck and the rules, else return
  181.     false.
  182.     /*************************************************************************/
  183.     function isCardNumber() {
  184.     var argv = isCardNumber.arguments;
  185.     var argc = isCardNumber.arguments.length;
  186.     var cardnumber = (argc > 0) ? argv[0] : this.cardnumber;
  187.     if (!this.luhnCheck())
  188.     return false;
  189.  
  190.     for (var n = 0; n < this.len.size; n++)
  191.     if (cardnumber.toString().length == this.len[n]) {
  192.     for (var m = 0; m < this.rules.size; m++) {
  193.     var headdigit = cardnumber.substring(0, this.rules[m].toString().length);
  194.     if (headdigit == this.rules[m])
  195.     return true;
  196.     }
  197.     return false;
  198.     }
  199.     return false;
  200.     }
  201.  
  202.     /*************************************************************************/
  203.     boolean isExpiryDate([int year, int month])
  204.     return true if the date is a valid expiry date,
  205.     else return false.
  206.     /*************************************************************************/
  207.     function isExpiryDate() {
  208.     var argv = isExpiryDate.arguments;
  209.     var argc = isExpiryDate.arguments.length;
  210.  
  211.     year = argc > 0 ? argv[0] : this.year;
  212.     month = argc > 1 ? argv[1] : this.month;
  213.  
  214.     if (!isNum(year+""))
  215.     return false;
  216.     if (!isNum(month+""))
  217.     return false;
  218.     today = new Date();
  219.     expiry = new Date(year, month);
  220.     if (today.getTime() > expiry.getTime())
  221.     return false;
  222.     else
  223.     return true;
  224.     }
  225.  
  226.     /*************************************************************************/
  227.     boolean isNum(String argvalue)
  228.     return true if argvalue contains only numeric characters,
  229.     else return false.
  230.     /*************************************************************************/
  231.     function isNum(argvalue) {
  232.     argvalue = argvalue.toString();
  233.  
  234.     if (argvalue.length == 0)
  235.     return false;
  236.  
  237.     for (var n = 0; n < argvalue.length; n++)
  238.     if (argvalue.substring(n, n+1) < "0" || argvalue.substring(n, n+1) > "9")
  239.     return false;
  240.     return true;
  241.     }
  242.  
  243.     /*************************************************************************/
  244.     boolean luhnCheck([String CardNumber])
  245.     return true if CardNumber pass the luhn check else return false.
  246.     Reference: http://www.ling.nwu.edu/~sburke/pub/luhn_lib.pl
  247.     /*************************************************************************/
  248.     function luhnCheck() {
  249.     var argv = luhnCheck.arguments;
  250.     var argc = luhnCheck.arguments.length;
  251.  
  252.     var CardNumber = argc > 0 ? argv[0] : this.cardnumber;
  253.  
  254.     if (! isNum(CardNumber)) {
  255.     return false;
  256.       }
  257.  
  258.     var no_digit = CardNumber.length;
  259.     var oddoeven = no_digit & 1;
  260.     var sum = 0;
  261.  
  262.     for (var count = 0; count < no_digit; count++) {
  263.     var digit = parseInt(CardNumber.charAt(count));
  264.     if (!((count & 1) ^ oddoeven)) {
  265.     digit *= 2;
  266.     if (digit > 9)
  267.     digit -= 9;
  268.     }
  269.     sum += digit;
  270.     }
  271.     if (sum % 10 == 0)
  272.     return true;
  273.     else
  274.     return false;
  275.     }
  276.  
  277.     /*************************************************************************/
  278.     ArrayObject makeArray(int size)
  279.     return the array object in the size specified.
  280.     /*************************************************************************/
  281.     function makeArray(size) {
  282.     this.size = size;
  283.     return this;
  284.     }
  285.  
  286.     /*************************************************************************/
  287.     CardType setCardNumber(cardnumber)
  288.     return the CardType object.
  289.     /*************************************************************************/
  290.     function setCardNumber(cardnumber) {
  291.     this.cardnumber = cardnumber;
  292.     return this;
  293.     }
  294.  
  295.     /*************************************************************************/
  296.     CardType setCardType(cardtype)
  297.     return the CardType object.
  298.     /*************************************************************************/
  299.     function setCardType(cardtype) {
  300.     this.cardtype = cardtype;
  301.     return this;
  302.     }
  303.  
  304.     /*************************************************************************/
  305.     CardType setExpiryDate(year, month)
  306.     return the CardType object.
  307.     /*************************************************************************/
  308.     function setExpiryDate(year, month) {
  309.     this.year = year;
  310.     this.month = month;
  311.     return this;
  312.     }
  313.  
  314.     /*************************************************************************/
  315.     CardType setLen(len)
  316.     return the CardType object.
  317.     /*************************************************************************/
  318.     function setLen(len) {
  319.     // Create the len array.
  320.     if (len.length == 0 || len == null)
  321.     len = "13,14,15,16,19";
  322.  
  323.     var tmplen = len;
  324.     n = 1;
  325.     while (tmplen.indexOf(",") != -1) {
  326.     tmplen = tmplen.substring(tmplen.indexOf(",") + 1, tmplen.length);
  327.     n++;
  328.     }
  329.     this.len = new makeArray(n);
  330.     n = 0;
  331.     while (len.indexOf(",") != -1) {
  332.     var tmpstr = len.substring(0, len.indexOf(","));
  333.     this.len[n] = tmpstr;
  334.     len = len.substring(len.indexOf(",") + 1, len.length);
  335.     n++;
  336.     }
  337.     this.len[n] = len;
  338.     return this;
  339.     }
  340.  
  341.     /*************************************************************************/
  342.     CardType setRules()
  343.     return the CardType object.
  344.     /*************************************************************************/
  345.     function setRules(rules) {
  346.     // Create the rules array.
  347.     if (rules.length == 0 || rules == null)
  348.     rules = "0,1,2,3,4,5,6,7,8,9";
  349.      
  350.     var tmprules = rules;
  351.     n = 1;
  352.     while (tmprules.indexOf(",") != -1) {
  353.     tmprules = tmprules.substring(tmprules.indexOf(",") + 1, tmprules.length);
  354.     n++;
  355.     }
  356.     this.rules = new makeArray(n);
  357.     n = 0;
  358.     while (rules.indexOf(",") != -1) {
  359.     var tmpstr = rules.substring(0, rules.indexOf(","));
  360.     this.rules[n] = tmpstr;
  361.     rules = rules.substring(rules.indexOf(",") + 1, rules.length);
  362.     n++;
  363.     }
  364.     this.rules[n] = rules;
  365.     return this;
  366.     }
  367.     //  End -->
  368.     </Script>
  369. //javascript/7089

回复 "JavaScript验证各种信用卡号码是否合法的代码"

这儿你可以回复上面这条便签

captcha