在jQuery中处理表单验证。付款有三种选择(信用卡,比特币,PayPal)。当用户选择信用卡以外的任何内容并提交时,表单会触发对信用卡验证的调用,即使我已添加语言以在选择不是信用卡时停止。它还将值重置为信用卡。
我确实有基于付款选择隐藏或显示字段的代码
//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;
}
答案 0 :(得分:1)
您需要通过为函数writeValue
提供第二个参数来返回属性的值,而不是设置它:
prop