クレジット カードのフィールドに次の属性が必要なブレインツリー (支払いゲートウェイ) のフォームを実装しています: data-encrypted-name
これは私のフォームです:
<form id="braintree-payment-form">
<input type="text" name="first_name" id="first_name" />
<br/><br/>
<input type="text" name="last_name" id="last_name" />
<br/> <br/>
<input type="text" id="number" data-encrypted-name="number" />
<br/><br/>
<input type="text" id="cvv" data-encrypted-name="cvv" />
<br/><br/>
<input type="submit" />
</form>
問題は、jQuery Validate を使用してこれらのフィールドを検証しようとすると、検証が正しく機能しないことです。
これは私のコードです(エラーメッセージを表示するqtipライブラリを含む):
$(document).ready(function() {
$("#braintree-payment-form").validate({
errorClass: "errormessage",
errorClass: 'error',
validClass: 'valid',
rules: {
"first_name": { required: true, maxlength: 45 },
"last_name": { required: true, maxlength: 45 }
},
messages: {
"first_name": { required: "Enter your Name", maxlength: "Largo máximo de 45 caracteres" },
"last_name": { required: "Enter your Last Name", maxlength: "Largo máximo de 45 caracteres" }
},
errorPlacement: function(error, element)
{
//qtip
var elem = $(element),
corners = ['right center', 'left center'],
flipIt = elem.parents('span.right').length > 0;
if(!error.is(':empty')) {
elem.filter(':not(.valid)').qtip({
overwrite: false,
content: error,
position: {
my: corners[ flipIt ? 0 : 1 ],
at: corners[ flipIt ? 1 : 0 ],
viewport: $(window)
},
show: {
event: false,
ready: true
},
hide: false,
style: {
classes: 'ui-tooltip-blue'
}
})
.qtip('option', 'content.text', error);
}
else { elem.qtip('destroy'); }
},
success: $.noop,
debug: false
});
$( "#number" ).rules( "add", {
required: true,
creditcard: true,
messages: {
required: "Credit Card Number is required",
creditcard: "Invalid Credit Card Number"
}
});
$( "#cvv" ).rules( "add", {
required: true,
messages: {
required: "CVV Invalid"
}
});
});
姓名は正しく検証されますが、カード番号を入力すると、最初の番号が検証され、CVV フィールドで同じメッセージ検証カードが繰り返されます。
このリンクを見てください: jsFiddle
私のコードは、この回答の例に基づいています: jQuery validate plugin adding multiple .rules() function
前もって感謝します!
ご挨拶。