2009-11-06 73 views
5

我想驗證信用卡號碼與jQuery,但我不想使用驗證插件,有沒有其他插件做到這一點?信用卡驗證與jquery

+4

驗證插件有什麼問題? – Bartek 2009-11-06 20:11:13

+1

是嗎?谷歌並沒有真正返回任何明顯而不是驗證插件的事實足夠好提示 – Bostone 2009-11-06 20:15:44

回答

11

http://en.wikipedia.org/wiki/Luhn_algorithm

你可以最大限度地減少之下到一個非常小的足跡在你的代碼這一點。

function isCreditCard(CC) 
{       
     if (CC.length > 19) 
      return (false); 

     sum = 0; mul = 1; l = CC.length; 
     for (i = 0; i < l; i++) 
     { 
      digit = CC.substring(l-i-1,l-i); 
      tproduct = parseInt(digit ,10)*mul; 
      if (tproduct >= 10) 
       sum += (tproduct % 10) + 1; 
      else 
       sum += tproduct; 
      if (mul == 1) 
       mul++; 
      else 
       mul--; 
     } 
     if ((sum % 10) == 0) 
      return (true); 
     else 
      return (false); 
} 
+1

+1 - Luhn將是在客戶端「驗證」它的唯一方法。 – 2009-11-06 20:18:42

+0

盧恩檢查實際上僅用於發現換位錯誤。您還需要檢查髮卡行的識別範圍(卡號的前六位數字)是否有效。 – PaulG 2009-11-06 20:23:23

2

如果你想確定它是一個有效的卡號,你需要檢查遠遠超過盧恩的數字。

的盧恩數字僅用於檢查換位的錯誤,並且可以輕鬆地與數字,如22222222222222222

卡號的前6位應檢查欺騙。這些數字被稱爲發行者識別號碼,並可用於確保該號碼在可識別的範圍內。不幸的是,你很難找到全面的IIN列表,這不僅僅是因爲發行者不斷添加和刪除範圍。維基百科有一個非常基本的概述,但:Bank card number

如果你可以從IIN中確定卡的類型,那麼你也可以在驗證數字的長度時進行刺探。

除非你有很好的理由,否則它更容易使用類似驗證插件的東西。

0

我建議你使用正則表達式 ... 您可以檢查我的倉庫我有一段代碼來驗證VISA,萬事達,發現,美國運通和安全碼

https://github.com/leojavier/RegexCollection


記住...只是因爲你限制的數字量並不意味着它會是正確的。

例如:
- 所有的Visa卡號碼都以4開頭。新卡片有16位數字。
- 所有的萬事達卡號碼都以51到55開頭。所有的都有16位數字。 等等......

index.html是一個示例,向您展示如何使用它!隨時寫信給我,如果您有任何疑問:)