5

基本的にカードの種類とクレジットカード番号の有効性をチェックする顧客の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メソッドを作成したことはありませんが、ここでは何も起こりません。他の方法を調べようとしたので、何を間違えたのか完全にはわかりませんが、何も見つかりませんでした。

4

2 に答える 2

3

jQuery Validationプラグインには、このようなものに使用できる追加のメソッドがすでにあります。

以下は、 「追加のメソッド」ファイルで使用されるデフォルトのメソッドですが、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.");
于 2012-12-17T20:37:15.217 に答える
-2

sub()はjavascript関数ではありません。探している関数はsubstring()です。ただし、最初の文字だけが必要なので、charAt(0)の方が簡単です。

于 2012-12-17T20:27:12.490 に答える