2016-01-13 86 views
0

我有一個OK按鈕,當點擊它時,它會調用hideTyre()。 hideTyre()函數調用SetBankFees函數。 我也有$(「#dialog-immpay」)。dialog()和$(「#dialog-SelectFees」)。dialog()。如果我在兩個對話框()之後放置hideTyre(),然後hideTyre(),那麼當我在兩個對話框()前放置hideTyre()時,OK按鈕單擊不能找到hideTyre(), 。被執行,但我得到了另一個錯誤,它說SetBankFees()是未定義的。jquery對話框導致其他功能不能正常工作

儘管這兩個對話框()在這裏工作正常,我猜兩個對話框()導致了問題。但我無法弄清楚什麼是錯的。

非常感謝您的幫助。

<script> 
     ...more js functions 

     function SetBankFees() 
     { 

`enter code here`  } 

`enter code here`  ...more js functions 

     function hideTyre() 
     { 
      SetBankFees(); 
      $("#tyreDiv").hide(); 
      $(".main").show(); 
     } 

     var immPayF8OrF9 = ""; 
     $("#dialog-immpay").dialog({ 
      autoOpen: false, 
      height: 400, 
      width: 750, 
      modal: true, 
      dialogClass: "no-close", 
      buttons: { 
       "Save without Print Invoice": function() { 
        allFields.removeClass("ui-state-error"); 

        FImmPay = immPay_Payment; 
        FComp = immPay_Comp; 
        FImmPayDate = CCDateStrToJDate($("#datePay").val()); 
        FCompDate = CCDateStrToJDate($("#dateCom").val()); 
        if ((FImmPay > 0.005) || (FComp > 0.005)) 
        { 
         FSaveImmPay = true; 
         FImmPayReceipt = immPay_Receipt; 
        } 
        else 
        FSaveImmPay = false; 

        FPrtInv = immPay_PrtInv; 

        $(this).dialog("close"); 
       }, 
       "print all unissued invoices": function() { 
        allFields.removeClass("ui-state-error"); 

        FImmPay = immPay_Payment; 
        FComp = immPay_Comp; 
        FImmPayDate = CCDateStrToJDate($("#datePay").val()); 
        FCompDate = CCDateStrToJDate($("#dateCom").val()); 
        if ((FImmPay > 0.005) || (FComp > 0.005)) 
        { 
         FSaveImmPay = true; 
         FImmPayReceipt = immPay_Receipt; 
        } 
        else 
         FSaveImmPay = false; 

        immPayF8OrF9 = "F8"; 

        $(this).dialog("close"); 
       }, 
       "print last invoice only": function() { 
        allFields.removeClass("ui-state-error"); 

        FImmPay = immPay_Payment; 
        FComp = immPay_Comp; 
        FImmPayDate = CCDateStrToJDate($("#datePay").val()); 
        FCompDate = CCDateStrToJDate($("#dateCom").val()); 
        if ((FImmPay > 0.005) || (FComp > 0.005)) 
        { 
         FSaveImmPay = true; 
         FImmPayReceipt = immPay_Receipt; 
        } 
        else 
         FSaveImmPay = false; 

        immPayF8OrF9 = "F9"; 

       $(this).dialog("close"); 
       }, 

       "Esc": function() { 
        $(this).dialog("close"); 
       } 
      }, 
      close: function() { 
       allFields.val("").removeClass("ui-state-error"); 

       if (immPayF8OrF9 == "") 
        DoAfterDoImmPay(); 
       else 
        ShowOption("#dialog-showPrintingOption", OriInvOption); 
      } 
     }); 

     $("#dialog-SelectFees").dialog({ 
      autoOpen: false, 
      height: 400, 
      width: 350, 
      modal: true, 
      buttons: { 
       "Select the fee" : function() { 
        allFields.removeClass("ui-state-error"); 
        $(this).dialog("close"); 
        AddRow(y); 
       }, 
       "Cancel" : function(){ 
        allFields.removeClass("ui-state-error"); 
        $(this).dialog("close"); 
       } 
      } 
     }); 

    }); 

// if leave hideTyre() here, then error SetBankFees(); is undefined 
//  function hideTyre() 
//  { 
//   SetBankFees(); 
//   $("#tyreDiv").hide(); 
//   $(".main").show(); 
//  } 

    ...more js functions 
</script> 

<button onclick="hideTyre()">OK</button> 
+0

請你可以創建你的代碼的任何演示? 所以我很容易理解。 –

回答

0

問題是函數hideTyre()和函數SetBankFees()在不同的作用域中。 SetBankFees()在$(function(){})內,但hideTyre()不在。 我的發現是$(function(){})之外的函數不能訪問$(function(){})中的函數,但$(function(){})中的函數可以訪問$(function() ){})。