2013-02-12 82 views
0

我想通過javascript函數驗證信用卡號碼。我正在通過html格式輸入內容,並希望在它的onblur事件中進行驗證。我想檢查輸入值是一個數然後卡類型,然後luhn算法,但我現在仍然無法編寫腳本。如何使用JavaScript驗證信用卡號碼

這裏是我下面的代碼:

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; 
} 

+1

查看http://stackoverflow.com/questions/6176802/how-to-validate-credit-card-number – Intrepidd 2013-02-12 10:20:34

+0

感謝您的建議,但我想檢查luhn算法太后得到卡類型:) – softcoder 2013-02-12 10:34:23

回答

1

我不會建議爲每種類型的信用卡的創造功能。如果對信用卡格式,引入的新卡進行更改,這將是一場噩夢。

除非您建立信用卡驗證插件,否則信用卡驗證格式的確切細節應該是抽象的。讓其他人擔心:)

jQuery Validation Plugincredit card validation method我建議你使用。

+0

親愛的柯特,非常感謝您的建議,但我需要執行我的代碼。 – softcoder 2013-02-12 13:36:05