2012-07-27 43 views
2

我的問題如下:jQuery沒有執行的部分

當我測試這個時,標記爲NOT BEING EXECUTED的部分未被執行。 該點之前的其他代碼工作正常,但在該行之後沒有任何反應。

我錯過了什麼嗎?我使用firebug運行Firefox,我可以看到變量(已註冊,groupcontracting和第三方)被定義爲1或0 ..但它們看起來不可見於'NOT BEING EXECUTED'行之下的代碼行。

$(document).ready(function() { 


    $('#restofform').css('display', 'none'); 
    $('#pharmdata').css('display', 'none'); 
    $('#form_bottom').css('display', 'none'); 
    $('#nextsteps').css('display', 'none'); 
    $('#group_status_message').css('display', 'none'); 
    $("#Affiliation").css('display', 'none'); 
    $("#affiliation_note").css('display', 'none'); 
    $("#AffiliationLabel").css('display', 'none'); 
    $("#affilitation").css('display', 'none'); 

    var enrolled; 
    var groupcontracting; 
    var thirdparty; 

    $('#UserNumber').keyup(function check_enrollment() { 

     //get the userid 
     var userid = $('#UserNumber').val(); 
     var input_length = $("#UserNumber").val().length; 

     function populate(frm, data) { 
      $.each(data, function (key, value) { 
       $('[id=' + key + ']', frm).val(value); 
      }); 
     } 

     if (input_length >= 7) { 
      //network enrollment check 
      var enlink = "enrollment_check.php?userid =" + userid; 
      var gpclink = "group_contracting_check.php?userid =" + userid; 
      var bncdlink = "thirdparty_check.php?userid =" + userid; 
      $.getJSON(enlink, function (result) { 
       console.log(result); 

       if (jQuery.isEmptyObject(result)) { 
        //show that the pharmacy is not enrolled 
        $('#enroll_status').addClass('badge badge-inverse'); 
        $('#enroll_status').html('Not Enrolled'); 
        enrolled = '0'; 
        console.log(enrolled); 

       } else if (!jQuery.isEmptyObject(result)) { 
        //show that the pharmacy is enrolled 
        $('#enroll_status').addClass('badge badge-success'); 
        $('#enroll_status').html('Enrolled'); 
        enrolled = '1'; 
        console.log(enrolled); 
       } 
      }); 
      // end of network enrollment check 

      // group contracting affiliation check 
      $.getJSON(gpclink, function (gcresult) { 
       console.log(gcresult); 

       if (!jQuery.isEmptyObject(gcresult)) { 
        //show that the username is available 
        $('#group_status').addClass('badge badge-success'); 
        $('#group_status').html('Group Affiliated'); 
        groupcontracting = '1'; 
        console.log(groupcontracting); 

       } else if (jQuery.isEmptyObject(gcresult)) { 
        //show that the username is NOT available 
        groupcontracting = '0'; 
        console.log(groupcontracting); 
       } 
      }); 
      // end of group contracting check 

      // third party contractual relationship check 
      $.getJSON(bncdlink, function (bdresult) { 
       console.log(bdresult); 

       if (!jQuery.isEmptyObject(bdresult)) { 
        //show that the username is available 
        $('#thirdparty_status').addClass('badge badge-success'); 
        $('#thirdparty_status').html('Third Party'); 
        thirdparty = '1'; 
        console.log(thirdparty); 

       } else if (jQuery.isEmptyObject(bdresult)) { 
        //show that the username is NOT available 
        thirdparty = '0'; 
        console.log(thirdparty); 
       } 
      }); 
      //end of third party check 


      // ***********THIS PART IS NOT BEING EXECUTED ************* 
      // check to see what the variables are set to and display accordingly 

      if ((enrolled == '0') && (groupcontracting == '0') && (thirdparty == '0')) { 

       // set hidden fields 
       $('input[name=enrolled]').val('0'); 
       $('input[name=groupcontracting]').val('0'); 
       $('input[name=thirdparty]').val('0'); 
       //show and hide appropriate parts of forms 
       $('#restofform').css('display', ''); 
       $('#form_bottom').css('display', ''); 
       $('#pharmdata').css('display', 'none'); 
       $('#nextsteps').css('display', ''); 
       $('#form_continue').attr('disabled', true); 
       $('#form_continue').css('display', 'none'); 
       $('#form_enroll').attr('disabled', false); 
       $('#form_enroll').css('display', ''); 
       // enable form fields 
       $('#FirstName').attr('disabled', false); 
       $('#LastName').attr('disabled', false); 
       $('#EmailAddress').attr('disabled', false); 
       $('#HomePhone').attr('disabled', false); 
       $('#FaxNumber').attr('disabled', false); 
       $('#CompanyName').attr('disabled', false); 
       $('#Role').attr('disabled', false); 
       $('#Comments').attr('disabled', false); 
       //display third party message since the Pharmacy will need to sign with them. 
       $('#steps').append('<li>This would be the third party statement, letting the pharmacy know that the third party will be contacting them.</li>'); 

      } else if ((enrolled == '0') && (groupcontracting == '1') && (thirdparty == '0')) { 

       // set hidden fields 
       $('input[name=enrolled]').val('0'); 
       $('input[name=groupcontracting]').val('1'); 
       $('input[name=thirdparty]').val('0'); 
       //show and hide appropriate parts of forms 
       $('#restofform').css('display', ''); 
       $('#form_bottom').css('display', ''); 
       $('#pharmdata').css('display', 'none'); 
       $('#nextsteps').css('display', ''); 
       $('#form_continue').attr('disabled', true); 
       $('#form_continue').css('display', 'none'); 
       $('#form_enroll').attr('disabled', false); 
       $('#form_enroll').css('display', ''); 
       // enable form fields 
       $('#FirstName').attr('disabled', false); 
       $('#LastName').attr('disabled', false); 
       $('#EmailAddress').attr('disabled', false); 
       $('#HomePhone').attr('disabled', false); 
       $('#FaxNumber').attr('disabled', false); 
       $('#CompanyName').attr('disabled', false); 
       $('#Role').attr('disabled', false); 
       $('#Comments').attr('disabled', false); 
       //display third party message since the Pharmacy will need to sign with them. 
       $('#steps').append('<li>This would be the third partystatement, letting the pharmacy know that the third party will be contacting them.</li>'); 
       // show message to Pharmacy that they can enroll, but their group contracting entity will enroll them in products 
       $('#steps').append('<li>As a pharmacy currently affiliated with a group contracting entity, you will be able to enroll in the network, but enrollment in the Preferred Network will be handled by your group contracting entity.</li>'); 


      } else if ((enrolled == '0') && (groupcontracting == '0') && (thirdparty == '1')) { 

       // set hidden fields 
       $('input[name=enrolled]').val('0'); 
       $('input[name=groupcontracting]').val('0'); 
       $('input[name=thirdparty]').val('1'); 
       //show and hide appropriate parts of forms 
       $('#restofform').css('display', ''); 
       $('#form_bottom').css('display', ''); 
       $('#pharmdata').css('display', 'none'); 
       $('#nextsteps').css('display', ''); 
       $('#form_continue').attr('disabled', true); 
       $('#form_continue').css('display', 'none'); 
       $('#form_enroll').attr('disabled', false); 
       $('#form_enroll').css('display', ''); 
       // enable form fields 
       $('#FirstName').attr('disabled', false); 
       $('#LastName').attr('disabled', false); 
       $('#EmailAddress').attr('disabled', false); 
       $('#HomePhone').attr('disabled', false); 
       $('#FaxNumber').attr('disabled', false); 
       $('#CompanyName').attr('disabled', false); 
       $('#Role').attr('disabled', false); 
       $('#Comments').attr('disabled', false); 

      } else if ((enrolled == '1') && (groupcontracting == '0') && (thirdparty == '0')) { 

       // set hidden fields 
       $('input[name=enrolled]').val('1'); 
       $('input[name=groupcontracting]').val('0'); 
       $('input[name=thirdparty]').val('0'); 
       //show & populate and hide appropriate parts of forms 
       $('#restofform').css('display', 'none'); 
       $('#pharmdata').css('display', ''); 
       $('#form_bottom').css('display', ''); 
       $('#nextsteps').css('display', ''); 
       $('#form_continue').attr('disabled', false); 
       $('#form_continue').css('display', ''); 
       $('#form_enroll').attr('disabled', true); 
       $('#form_enroll').css('display', 'none'); 
       populate('#pharmdata', result); // set as the div the fields are in and NOT the form 
       // disable form fields 
       $('#FirstName').attr('disabled', true); 
       $('#LastName').attr('disabled', true); 
       $('#EmailAddress').attr('disabled', true); 
       $('#HomePhone').attr('disabled', true); 
       $('#FaxNumber').attr('disabled', true); 
       $('#CompanyName').attr('disabled', true); 
       $('#Role').attr('disabled', true); 
       $('#Comments').attr('disabled', true); 
       // show message to Pharmacy that they should check their info before proceding 
       $('#steps').append('<li>If any of your information needs to be updated, please click <a href="mailto:[email protected]">here</a> to email our network support team.</li>'); 
       //display third partymessage since the Pharmacy will need to sign with them. 
       $('#steps').append('<li>This would be the third party statement, letting the pharmacy know that the third party will be contacting them.</li>'); 

      } else if ((enrolled == '1') && (groupcontracting == '1') && (thirdparty == '0')) { 

       // set hidden fields 
       $('input[name=enrolled]').val('1'); 
       $('input[name=groupcontracting]').val('1'); 
       $('input[name=thirdparty]').val('0'); 
       // show message to Pharmacy that they are good to go and have nothing further to do. 
       $('#group_status_message').html('<p class="content-p">As a pharmacy both currently a Network Member and affiliated with a group contracting entity, no further steps are required. You will be enrolled into the Preferred Network by your group contracting entity.</p>'); 

      } else if ((enrolled == '1') && (groupcontracting == '1') && (thirdparty == '1')) { 

       // set hidden fields 
       $('input[name=enrolled]').val('1'); 
       $('input[name=groupcontracting]').val('1'); 
       $('input[name=thirdparty]').val('1'); 
       // show message to Pharmacy that they are good to go and have nothing further to do. 
       $('#group_status_message').html('<p class="content-p">As a pharmacy both currently a Network Member and affiliated with a group contracting entity, no further steps are required. You will be enrolled into the Preferred Network by your group contracting entity.</p>'); 

      } else if ((enrolled == '1') && (groupcontracting == '0') && (thirdparty == '1')) { 

       // set hidden fields 
       $('input[name=enrolled]').val('1'); 
       $('input[name=groupcontracting]').val('0'); 
       $('input[name=thirdparty]').val('1'); 
       //show & populate and hide appropriate parts of forms 
       $('#restofform').css('display', 'none'); 
       $('#pharmdata').css('display', ''); 
       $('#form_bottom').css('display', ''); 
       $('#nextsteps').css('display', ''); 
       $('#form_continue').attr('disabled', false); 
       $('#form_continue').css('display', ''); 
       $('#form_enroll').attr('disabled', true); 
       $('#form_enroll').css('display', 'none'); 
       populate('#pharmdata', result); // set as the div the fields are in and NOT the form 
       // disable form fields 
       $('#FirstName').attr('disabled', true); 
       $('#LastName').attr('disabled', true); 
       $('#EmailAddress').attr('disabled', true); 
       $('#HomePhone').attr('disabled', true); 
       $('#FaxNumber').attr('disabled', true); 
       $('#CompanyName').attr('disabled', true); 
       $('#Role').attr('disabled', true); 
       $('#Comments').attr('disabled', true); 
       // show message to Pharmacy that they should check their info before proceding 
       $('#steps').append('<li>If any of your information needs to be updated, please click <a href="mailto:[email protected]">here</a> to email our network support team.</li>'); 

      } 

     } 
    }); 
    // end of 3rd party contract check 
    // end of all checks 



}); // document.ready() 
+5

您可能想嘗試將其切回到一個最小工作示例......我無法相信所有代碼都是重現問題所必需的...... – Chris 2012-07-27 16:27:04

+0

是否報告了任何錯誤? – 2012-07-27 16:28:01

+0

不確定它是否僅僅是將代碼粘貼到編輯器中的結果,但是縮進非常糟糕 - 並且弄清楚了什麼會變得非常困難 – freefaller 2012-07-27 16:28:24

回答

0

你說的代碼沒有運行,只是因爲那些$.getJSON函數調用是異步的。

當JavaScript引擎得到第一個if (...)語句時,$.getJSON方法都沒有返回值,所以jQuery很樂意將它評估爲「false」並跳過它,就像它應該的那樣。

嘗試包裝的代碼塊在$.ajaxStop()包裝:

$(document).ajaxStop(function() { 
    // this code will run after all AJAX events have completed 
}); 
+0

Blazemonger!謝謝!那就是訣竅。現在都完美了。 對於上面的那些,是的粘貼的代碼搞亂了縮進。我非常關注代碼縮進。 – 2012-07-27 16:46:31

0

如果你期望就讀,groupcontracting,和第三方變量是在全球範圍內,你應該定義它們的方式(即外onready功能)。如果這個值是它們的默認值,你也可能想明確地將這些值設置爲'0'。