我使用了以下链接中的代码来尝试验证信用卡,但是当我在现场提交错误数据时,我没有收到提醒。
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>
也许我使用了错误的代码?
答案 0 :(得分:2)
移动onsubmit="Validate(Luhn);"
到表单标记并传递表单
像这样 - 请注意我传递表单并从表单中找到数字。 我也移动了测试并返回false / return true
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)">
答案 1 :(得分:1)
我来到这个问题,在javascript中寻找可以安全地用于verify PAN check digit的在线卡片验证器,而不存在服务器上的恶意拦截风险。
http://rosettacode.org/wiki/Luhn_test_of_credit_card_numbers#JavaScript和https://sites.google.com/site/abapexamples/javascript/luhn-validation有很多javascript Luhn实现。
这是典型的实施:
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);
}
})();
通过谷歌搜索“luhn jsfiddle”,我发现另一个准备使用强大的在线验证器: