2015-12-21 41 views
0

我正在嘗試使用JavaScript與ASP.NET Web窗體進行簡單的彈出窗口。Modal在JavaScript中彈出不起作用

我有下面的代碼:

<%@ Register Src="~/Controls/BankInformation.ascx" TagName="BankInformation" TagPrefix="ABS" %> 

    <script type="text/javascript"> 
     $(document).ready(function() { 
      var bankInformation = $('#<%=bankInformation.ClientID%>'); 
      var sameAsMerchantBankCheckbox = $('#<%=chkSameAsMerchantBank.ClientID%>'); 
      function OpenDirectDebitDialog(dialogID) { 
       $("#" + dialogID).modal(); 
      } 

      function ValidateAndCloseDirectDebitDialog(validationGroup, dialogID) { 
       var pageValid = Page_ClientValidate(validationGroup); 
       if (pageValid) 
        $("#" + dialogID).modal("hide"); 
      } 

      $(sameAsMerchantBankCheckbox).change(function() { 
       OpenDirectDebitDialog(bankInformation); 
      }); 
     }); 
    </script> 

    <asp:CheckBox runat="server" ID="chkDirectDebit" /> 
    <asp:Label runat="server" AssociatedControlID="chkSameAsMerchantBank" ID="txtDirectDebit" meta:resourcekey="lblDirectDebit"></asp:Label> 
    <asp:CheckBox runat="server" ID="chkSameAsMerchantBank" AutoPostBack="True" Checked="True" /> 
    <asp:Label runat="server" AssociatedControlID="txtSameAsMerchantBank" ID="txtSameAsMerchantBank" meta:resourcekey="lblSameAsMerchantBank"></asp:Label> 

    <div id="bankInfoDialog" runat="server" class="modal hide fade" tabindex="-1" role="dialog" aria-hidden="true"> 
     <ABS:BankInformation runat="server" ID="bankInformation" /> 
    </div> 

在取消chkSameAsMerchantBank複選框事件應激發和OpenDirectDebitDialog功能應該被調用。但所有這一切發生的頁面刷新(自動回發我猜)。瀏覽器控制檯沒有錯誤或任何內容。 有人看到我在做錯嗎?我是否可以像這樣在模態上調用隱藏窗體?

+0

你必須使用'ClienID'。 –

+0

Jquery選擇器中使用的ID是錯誤的。嘗試使用「chkSameAsMerchantBank」作爲ID像$(chkSameAsMerchantBank).change(函數().... – DfrDkn

+0

@DfrDkn哦對不起我的錯誤,我錯過了我的問題中的代碼行,但我確實有它。像這樣:var sameAsMerchantBankCheckbox = $('#<%= chkSameAsMerchantBank.ClientID%>');我會立即添加它的問題 –

回答

1

你要做

var sameAsMerchantBankCheckbox = $('#<%=chkSameAsMerchantBank.ClientID%>'); 
在你的代碼

然後訪問複選框標識

+0

我做到了,但還是沒有。 。@ParthTrivedi –

+0

你在瀏覽器控制檯中發生了什麼錯誤? –

+0

可能是問題很簡單。執行'$(「#bankInfoDialog」).modal()'。不使用'bankInformation' ID它在彈出窗口內'div' –

1

您不必在功能再次重新創建一個jQuery id選擇爲:

$("#" + dialogID).modal(); 

,因爲傳遞的參數已經是一個jQuery對象。所以只需從中刪除"#"+


爲什麼?見下圖:

由於這var是一個jQuery對象:

var bankInformation = $('#<%=bankInformation.ClientID%>'); // id selector jq object. 

您不必在功能再次使其它的ID選擇:

var sameAsMerchantBankCheckbox = $('#<%=chkSameAsMerchantBank.ClientID%>');// id selector. 

被傳遞在改變事件的函數:

$(sameAsMerchantBankCheckbox).change(function() { // <----this will do. 
    OpenDirectDebitDialog(bankInformation); // <----passed the jQuery selector object here. 
});  

所以你只需要做到這一點:

function OpenDirectDebitDialog(dialogID) { 
    dialogID.modal(); // it would suffice. 
    // or $(dialogID).modal(); 
} 
+0

謝謝你的回答,我按照你的建議做了......但還是一無所獲,莫代爾不開火了@Jai –