此代码无效,我无法理解原因:
这是特殊的9位数卡验证器,
我在页面“9digitCardTextBox”中有一个文本框,并在.aspx页面上使用clientide验证器进行调用。
错误:Microsoft JScript中的运行时错误:需要对象。
验证者:
<asp:CustomValidator runat="server" ID="CustomValidator16" EnableClientScript="true"
Display="Dynamic" OnServerValidate="9digitcard_ServerValidate" CssClass="error"
SetFocusOnError="true"
ClientValidationFunction="9digitcard_ClientValidate">cc not good</asp:CustomValidator>
客户端电话:
function 9digitcard_ClientValidate(sender, e)
{
num = $("input[name*='9digitCardTextBox']").val();
sum = 0; mul = 1; l = num.length;
for (i = 0; i < l; i++)
{
digit = num.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)
e.isValid = true;
else
e.isValid = false;
}
答案 0 :(得分:1)
不需要使用jquery,只需js匹配即可:
var patt=/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/g;
var mastercard = "5123625454565122";
var random = "21236258456565122";
var isValid = patt.test(mastercard);
if(isValid){
document.write("mastercard : credit card nbr is valid.<br />");
}else{
document.write("mastercard : credit card nbr is NOT valid!<br />" );
}
var isValid = patt.test(random);
if(isValid){
document.write("random : credit card nbr is valid.<br />");
}else{
document.write("random : credit card nbr is NOT valid!<br />" );
}
请参阅:http://jsfiddle.net/TbDR2/
编辑:您可以在此处找到其他信用卡号验证的正则表达式:http://www.regular-expressions.info/creditcard.html
答案 1 :(得分:1)
我无法找到JScript语法的正式定义,但如果它足够类似于JavaScript,那么首先要做的是将9digitcard_ClientValidate
重命名为名称,而不是以数字开头