【问题标题】:Credit Card Number Validation信用卡号码验证
【发布时间】:2014-05-28 11:24:09
【问题描述】:

您好,我的 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>';

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

【问题讨论】:

  • 您遇到的错误是什么?在验证信用卡号码时,还可以查看 luhn 算法。我还建议不仅从客户端验证这些数字,还从服务器端验证这些数字。
  • @scragar 关于函数返回值的部分是真的,但是 onsubmit 事件只检查false的确切返回值
  • 还记得在函数末尾添加一个 return true。
  • @MatteoTassinari 测试并确认,没有意识到这一点,谢谢指出。

标签: javascript php html


【解决方案1】:

而不是

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)

【讨论】:

  • 不客气 :) 如果我的回答对您有帮助,请随时点赞和/或接受它。
  • 我需要等待 5 分钟才能这样做吗:)
  • 我在进行电话号码验证时也遇到了问题,我需要它,所以它只有在您输入数字时才有效
  • var x=document.forms["checkout_details"]["phone"].value; if (!isNaN(phoneInput).value)//if the length is not 13 or 18 { alert("Please enter a valid Phone Number");//display message to user; return false; }
  • 请分开提问,不要在cmets中提问。
【解决方案2】:

你是说

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

如果长度不完全是 13 个 18 个字符,则原件会抱怨;即:always,因为长度为 13 的字符串的长度不能为 18,反之亦然;你也想匹配两者之间的所有长度。

【讨论】:

  • 我在进行电话号码验证时也遇到了问题,我需要它,所以它只有在您输入数字时才有效
  • var x=document.forms["checkout_details"]["phone"].value; if (!isNaN(phoneInput).value)//if the length is not 13 or 18 { alert("Please enter a valid Phone Number");//display message to user; return false; }
  • @user3674827 请单独提问,不要在 cmets 中提问。
【解决方案3】:

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

你可以在这里看到不同的正则表达式 Credit card regex'

【讨论】:

  • 我在进行电话号码验证时也遇到了问题,我需要它,所以它只有在您输入数字时才有效
  • var x=document.forms["checkout_details"]["phone"].value; if (!isNaN(phoneInput).value)//if the length is not 13 or 18 { alert("Please enter a valid Phone Number");//display message to user; return false; }
【解决方案4】:

不应该是:

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

【讨论】:

    【解决方案5】:

    试试这个

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

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

    jquery credit card validator

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-01
      • 1970-01-01
      • 2014-08-14
      • 2011-11-16
      • 1970-01-01
      • 2016-01-22
      • 2011-05-09
      • 1970-01-01
      相关资源
      最近更新 更多