如何使用JavaScript验证信用卡号

How to validate a Credit Card Number with JavaScript

本文关键字:信用卡 验证 JavaScript 何使用      更新时间:2023-09-26

我正在尝试通过javascript函数验证信用卡号。我正在通过html表单进行输入,并希望在onblur事件中使用它进行验证。我想检查输入值是一个数字,然后是卡片类型,然后是luhn算法,但我现在还无法编写脚本。

下面是我的代码:

function allnumeric()  
            {
            var inputtxt = document.form1.inputtxt; 
            var numbers = /^[0-9]+$/;  
            if(inputtxt.value.match(numbers))  
                {  
                    if(visa(inputtxt))
                    {
                        if(function luhn(inputtxt))
                        {
                        return true;
                        }
                        else  
                        {   
                        return false;  
                        }
                    }
                    else if (function mastercard(inputtxt))
                    {
                        if(function luhn(inputtxt))
                        {
                        return true;
                        }
                        else  
                        {   
                        return false;  
                        }
                    }
                }   
            else  
            {  
            alert('Please enter your valid card number');  
            inputtxt.focus();  
            return false;  
            } 
function visa(inputtxt)  
{  
  var cardno = /^(?:4[0-9]{12}(?:[0-9]{3})?)$/;  
  if(inputtxt.value.match(cardno))  
        {  
      return true;  
        }  
      else  
        {  
        alert("Not a valid Visa credit card number!");  
        return false;  
        }  
}  
function mastercard(inputtxt)  
{  
  var cardno = /^(?:5[1-5][0-9]{14})$/;  
  if(inputtxt.value.match(cardno))  
        {  
      return true;  
        }  
      else  
        {  
        alert("Not a valid Mastercard number!");  
        return false;  
        }  
function luhn(inputtxt)
{
            /* Luhn check */
            var cc_sum = 0;
            var parsedCC;
            var cclen = inputtxt.length;
            for (i=cclen-1; i>=0; i--) {
                    var charati = inputtxt[i] + '';
                    parsedCC = parseInt(charati);
                    var oddeven = cclen-1 - i;
                    cc_sum += (oddeven%2 == 0) ? parsedCC :
                                    (parsedCC > 4) ? parsedCC * 2 % 10 + 1 :
                                            parsedCC * 2;
            }
            var checkvalid = ((cc_sum % 10) == 0) ? true : false;
            return checkvalid;
}

我不建议为每种类型的信用卡创建函数。如果对信用卡格式进行更改,引入新卡等,这将是一场噩梦。

除非你构建了一个信用卡验证插件,否则信用卡验证格式的确切细节对你来说应该是抽象的。让其他人担心:)

jQuery验证插件有一个信用卡验证方法,我建议您使用。