jQuery验证程序信用卡号+;类型匹配

jQuery验证程序信用卡号+;类型匹配,jquery,jquery-validate,Jquery,Jquery Validate,尝试添加一个customer jQuery验证程序方法,该方法基本上检查卡类型和信用卡号的有效性 即,如果类型为MasterCard,如果卡号不以5开头,则该类型无效;如果类型为Visa,如果卡号不以4开头,则该类型无效。我的公司只收取MC或Visa费用,因此不需要其他费用 $.validator.addMethod("CCNumber", function(value, element, param) { if (param == "MasterCard") { return va

尝试添加一个customer jQuery验证程序方法,该方法基本上检查卡类型和信用卡号的有效性

即,如果类型为MasterCard,如果卡号不以5开头,则该类型无效;如果类型为Visa,如果卡号不以4开头,则该类型无效。我的公司只收取MC或Visa费用,因此不需要其他费用

$.validator.addMethod("CCNumber", function(value, element, param) {
  if (param == "MasterCard") {
    return value.substring(0,1) != 5;   
  }
  else if (param == "Visa") {
    return value.substring(0,1) != 4;   
  }
});
在这里称呼它:

cardnumber: {
  required: true,
  creditcard: true,
  minlength: 13,
  maxlength: 16,
  digits: true,
  CCNumber: function(){ return $('#cardtype').val(); }
},
还有消息

cardnumber: {
  required: "Please enter a valid credit card number",
  minlength: "Please enter a valid credit card number",
  maxlength: "Please enter a valid credit card number",
  digits: "Your credit card number cannot contain spaces.",
  CCNumber: "WRONG"
},
最后,HTML:

<select name="cardtype" id="cardtype">
  <option value="MasterCard">MasterCard</option>
  <option value="Visa">Visa</option>
</select>

万事达卡
签证
我以前从未编写过jQuery方法,但这里什么都没有发生。我不完全确定我做错了什么,因为我试图查看其他方法,但什么也找不到。

sub()不是javascript函数。您要查找的函数是substring()。但是,更简单的方法是charAt(0),因为您只需要第一个字符。

已经有其他方法可用于此类操作

以下是中使用的默认方法,但随后仅针对Visa&Mastercard向下编辑

jQuery.validator.addMethod("creditcardtypes", function(value, element, param) {
    if (/[^0-9-]+/.test(value)) {
        return false;
    }

    value = value.replace(/\D/g, "");

    var validTypes = 0x0000;

    if (param.mastercard)
        validTypes |= 0x0001;
    if (param.visa)
        validTypes |= 0x0002;

    if (validTypes & 0x0001 && /^(5[12345])/.test(value)) { //mastercard
        return value.length == 16;
    }
    if (validTypes & 0x0002 && /^(4)/.test(value)) { //visa
        return value.length == 16;
    }
    return false;
}, "Please enter a valid credit card number.");

你为什么要这种字体?@FergusMorrow:是的。OP应该把它处理掉。
sub
应该做什么?你是说
子字符串
?用我发现的更改更新了OP。我认为更接近正确的轨道。如果你真的在使用,因为你的问题被标记了,那么为什么不简单地使用中包含的用于CC验证的内置方法?你能展示一个使用creditcardtypes方法作为验证规则一部分的示例吗?@dirt,根据选择列表,传入此方法的参数是
visa
mastercard
,然后输入字段仅针对该卡类型进行验证。不管怎么说,这就是想法。@ViralPatel-你不能-php与此无关。这是jQuery,它是客户端代码。请不要在评论部分提出新问题。