我正在尝试通过javascript函数验证信用卡号。我正在接受html表单的输入,并想用它来验证onblur事件。我想检查输入值是一个数字然后卡类型然后luhn算法,但我现在仍然无法编写脚本。
以下是我的代码:
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;
}
答案 0 :(得分:1)
我不建议为每种类型的信用卡创建功能。如果对信用卡格式,新卡介绍等进行更改,这将是一个噩梦。
除非您构建信用卡验证插件,否则信用卡验证格式的确切详细信息应该是抽象的。让别人担心:)
我建议你使用jQuery Validation Plugin credit card validation method。