jQueryのフォーム検証の作業。支払いには3つのオプションがあります(クレジット、ビットコイン、ペイパル)。ユーザーがクレジットカード以外のものを選択して送信すると、フォームはクレジットカードではない場合に停止する言語を追加したにもかかわらず、クレジットカードの検証への呼び出しを開始します。また、クレジットカードに値をリセットしています。jQueryのネストされたIfステートメント
私は支払の選択に基づいてフィールドを隠すかを示すコード
//Changes Payment Sections Based on User Payment Choice
$('#bitcoin').hide();
$('#paypal').hide();
$("#payment option[value='credit card']").prop('selected', true);
$('#payment').on('change', function(){
if($(this).val() == 'credit card'){
$('#bitcoin').hide();
$('#paypal').hide();
$('#credit-card').show();
} else if ($(this).val()=='paypal'){
$('#paypal').show();
$('#credit-card').hide();
$('#bitcoin').hide();
} else if ($(this).val()=='bitcoin'){
$('#paypal').hide();
$('#credit-card').hide();
$('#bitcoin').show();
}
});
を持っていますし、これは、フォームの送信に
// On Form Submission Validate Form
$("#contact_submit button").click(function(event){
error_name = validateName();
error_email = validateEmail();
error_activity = validateActivities();
isCreditIssue = validateCredit();
var valid = true;
if ((error_name) || (error_email) || (error_activity) || (isCreditIssue)){
console.log("errors");
valid = false;
event.preventDefault();
} else {
alert('GREAT! form completed');
valid = true;
}
if (valid) {
return;
}
});
を何が起こっているかであり、ここでvalidateCredit機能です。もし私がここにいれば、ネストされたものが正しく動作していない可能性があります。私は少しこれを変更しようとしましたが、正しく動作するようなものは得られません。
//Check for Credit Card Issue -- Any problems with CC, Zip Code or CVV
function validateCredit(){
var credit = $("#payment option[value='credit card']");
var paypal = $("#payment option[value='paypal']");
var bitcoin = $("#payment option[value='bitcoin']");
isCreditIssue = false;
if (credit.prop('selected', true)){
errorCC = validateCC();
errorZip = validateZip();
errorCVV = validateCVV();
if ((errorCC) || (errorZip) || (errorCVV)){
isCreditIssue = true;
console.log('credit issue');
} }
else if (bitcoin.prop('selected', true)){
console.log('bitcoin');
isCreditIssue = false;
} else if (paypal.prop('selected', true)){
console.log('paypal');
isCreditIssue = false;
}
return isCreditIssue;
}
。 [prop()](http://api.jquery.com/prop/)のドキュメントを見てください。 –
あなたは非常に正しいです...ありがとうございます –
ちょうどコメント...値を 'クレジットカードからクレジットカードへの支払い変更ハンドラを減らすことができます: '$("#bitcoin、#paypal、#credit-card ")hide()。filter("# "+ this.value) – Andreas