2011-05-03 106 views
4

我已經使用下面鏈接的代碼嘗試驗證信用卡,但是當我在該字段中提交了錯誤的數據時,我沒有收到警報。JavaScript卡PAN校驗碼Luhn驗證

Strip spaces before performing Luhn check

我的格式如下:

<form id="myform" method="post" action=""> 

<p>Select credit card: 
    <select tabindex="11" id="CardType"> 
     <option value="AmEx">American Express</option> 
    <option value="CarteBlanche">Carte Blanche</option> 
    <option value="DinersClub">Diners Club</option> 
    <option value="Discover">Discover</option> 
    <option value="EnRoute">enRoute</option> 
    <option value="JCB">JCB</option> 
    <option value="Maestro">Maestro</option> 
    <option value="MasterCard">MasterCard</option> 
    <option value="Solo">Solo</option> 
    <option value="Switch">Switch</option> 
    <option value="Visa">Visa</option> 
    <option value="VisaElectron">Visa Electron</option> 
    <option value="LaserCard">Laser</option> 
    </select> 
</p> 

<p> 
Enter number: 
<input type="text" id="CardNumber" maxlength="24" size="24" /> 
    <input type="submit" id="submitbutton" onsubmit="Validate(Luhn);" /> 
</p> 

</form> 

也許我使用了錯誤的代碼?

回答

2

移動onsubmit="Validate(Luhn);"

到窗體標籤,並通過形式

這樣的 - 請注意我傳遞的形式,找到從表單數量。 我也感動的考驗,周圍

http://jsfiddle.net/mplungjan/VqXss/

function Validate(theForm) { 
    var Luhn = theForm.CardNumber.value; 
    var LuhnDigit = parseInt(Luhn.substring(Luhn.length-1,Luhn.length)); 
    var LuhnLess = Luhn.substring(0,Luhn.length-1); 
    if (Calculate(LuhnLess)!=parseInt(LuhnDigit)) { 
    alert("\n\nYou have mis-typed your card number! \nPlease check and correct.\n\n") 
    return false; 
    } 
    return true; 
} 
</script> 
</head> 
<body> 
<form id="myform" method="post" action="" onsubmit="return Validate(this)"> 
+0

感謝您的答覆.. .i複製了上面的代碼,但是表單似乎只是提交而已。 – Hatzi 2011-05-03 13:11:25

+0

@Hatzi - 我錯過了=看看這裏:http://jsfiddle.net/mplungjan/VqXss/ – mplungjan 2011-05-03 13:18:31

+0

@mplugjan - 非常感謝你的幫助,工作得很好。 – Hatzi 2011-05-03 14:11:37

1

我來到這個問題在javascript網上尋找卡PAN的驗證,可以安全地用於verify PAN check digit沒有惡意攔截的危險返回false /返回true在服務器上。

有大量的JavaScript Luhn實現在http://rosettacode.org/wiki/Luhn_test_of_credit_card_numbers#JavaScripthttps://sites.google.com/site/abapexamples/javascript/luhn-validation

這裏是典型的實現:

var LuhnCheck = (function() 
{ 
    var luhnArr = [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]; 
    return function(str) 
    { 
     var counter = 0; 
     var incNum; 
     var odd = false; 
     var temp = String(str).replace(/[^\d]/g, ""); 
     if (temp.length == 0) 
      return false; 
     for (var i = temp.length-1; i >= 0; --i) 
     { 
      incNum = parseInt(temp.charAt(i), 10); 
      counter += (odd = !odd)? incNum : luhnArr[incNum]; 
     } 
     return (counter%10 == 0); 
    } 
})(); 

並通過google搜索 「LUHN的jsfiddle」 我發現了另一個準備用強大的在線驗證:

http://jsfiddle.net/silvinci/84bru/light/