2012-12-17 14 views
5

基本的にカードのタイプとクレジットカード番号の正当性をチェックするカスタマーjQueryバリデーターメソッドを追加しようとしています。jQueryバリデータークレジットカード番号+タイプ一致

ie。タイプが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:私はjQueryの書かれたことがありません

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

を方法はありますが、ここでは何も起こっていません。私は他の方法を見ようとしたが、何も見つけられなかったので、私が間違ったことを完全には分かっていない。

+0

どうしてタイプを尋ねていますか? – SLaks

+0

@FergusMorrow:はい。 OPはちょうどそれを取り除く必要があります。 – SLaks

+1

'サブ'とは何ですか? 'substring'を意味しましたか? –

答えて

2

jQuery Validation pluginにはすでにこのような方法が追加されています。

"Additional Methods" fileで使用されているデフォルトの方法ですが、Visa &マスターカードでのみ編集されます。

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."); 
+0

validateルールの一部としてcreditcardtypesメソッドを使用する例を表示できますか? –

+0

@dirtこのメソッドに渡すパラメータは、選択リストに基づいて 'visa'または' mastercard'であり、入力フィールドはそのカードタイプに対してのみ有効です。それはとにかく考えです。 – Sparky

-2

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

+0

コードを正しくフォーマットしてください。 – Sparky

関連する問題