在jQuery中嵌套If语句

时间:2017-09-22 14:46:18

标签: javascript jquery

在jQuery中处理表单验证。付款有三种选择(信用卡,比特币,PayPal)。当用户选择信用卡以外的任何内容并提交时,表单会触发对信用卡验证的调用,即使我已添加语言以在选择不是信用卡时停止。它还将值重置为信用卡。

here is jfiddle

我确实有基于付款选择隐藏或显示字段的代码

//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;
}

1 个答案:

答案 0 :(得分:1)

您需要通过为函数writeValue提供第二个参数来返回属性的值,而不是设置它:

prop