jquery对话框导致其他功能无法正常工作

时间:2016-01-13 05:27:36

标签: javascript jquery dialog

我有一个OK按钮,当点击它时,它会调用hideTyre()。 hideTyre()函数调用SetBankFees函数。 我还有$("#dialog-immpay")。dialog()和$("#dialog-SelectFees")。dialog()。

问题是当我在两个对话框()之前放置hideTyre()时,单击OK按钮找不到hideTyre(), 如果我在两个dialog()之后放置hideTyre(),那么执行hideTyre(),但是我得到了另一个错误,它说SetBankFees()是未定义的。

虽然这两个dialog()在这里运行正常,但我猜两个dialog()会导致问题。但我无法弄清楚那里有什么不对。

非常感谢你的帮助。

<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>

1 个答案:

答案 0 :(得分:0)

问题是函数hideTyre()和函数SetBankFees()在不同的范围内。

SetBankFees()在$(function(){})中,但hideTyre()不在。 我的发现是$(function(){})之外的函数无法访问$(function(){})中的函数,但$(function(){})中的函数可以访问$(function()之外的函数{})。