2011-05-03 38 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/