信用卡号验证

时间:2014-05-28 11:24:10

标签: javascript php html

您好我的javascript验证有问题。我正在尝试验证信用卡号码,我希望它显示在13到18个数字和单个空格之间。

我的Javascript代码:

<script type="text/javascript">
function validateForm()
{
var x=document.forms["checkout_details"]["creditcard"].value;
    if(x.length != 13 || x.length != 18)//if the length is not 13 or 18
    {
        alert("Please enter a valid credit card number");//display message to user;
        return false;
    }    
}
</script>

HTML / PHP代码:

echo '<form name="checkout_details" action="confirm.php" onsubmit="return validateForm()" method="post">';
echo '<font color="red">*</font>&nbsp;<b>Credit Card Number:</b> <input type="text" name="creditcard" id="creditcard"><br /><br />';
echo '<input type="submit" value="Purchase">';
echo '</form>';

任何人都会帮助我告诉我我做错了什么。感谢。

5 个答案:

答案 0 :(得分:2)

而不是

if(x.length != 13 || x.length != 18)

你应该使用

if(x.length != 13 && x.length != 18)

事实上,根据您的原始条件,18与13不同,那将会返回true

此外,只接受13或18的确切长度,如果你想拒绝任何短于13或超过18的东西,那么你需要

if(x.length < 13 || x.length > 18)

答案 1 :(得分:2)

你的意思是

if (x.length < 13 || x.length > 18) {
    ...
}

如果长度不是13 18个字符,原始人会抱怨;即:始终,因为长度为13的字符串长度不能为18,反之亦然;你也希望匹配其间的所有长度。

答案 2 :(得分:1)

信用卡验证并不那么简单。您应该使用正则表达式进行检查。还有各种各样的信用卡格式。

你可以看到不同的正则表达式&#39;这里Credit card regex'

答案 3 :(得分:0)

不应该是:

if(x.length < 13 || x.length > 18)

答案 4 :(得分:0)

试试这个

if(x.length > 13 && x.length < 18) //if the length is between 13 and 18

这里还有一个非常好的CC验证插件

jquery credit card validator