在ASP.NET中使用javaScript时,模态弹出不会隐藏

时间:2015-12-25 07:08:34

标签: javascript jquery asp.net twitter-bootstrap

我使用jQuery制作了模态弹出窗口。我想要做的是在验证成功时隐藏窗口。 验证具有正确的值,但仍然会弹出屏幕。

这是我在js中的代码:

function validateAndCloseDirectDebitDialog(validationGroup, dialogID) {
         var pageValid = Page_ClientValidate(validationGroup);
         if (pageValid)
            $(dialogID).modal("hide");
         else {
            return false;
         }         
}

因此,当我在浏览器中进行调试时,我能够看到pageValid获得正确的值(true - 当验证良好时)它会进入if循环,但无论如何它都不会隐藏模态。

我也尝试过这样做:dialogID.modal("hide");因为dialogID是jQuery对象,但没有任何改变。

我从ASP.NET Web表单按钮调用此函数,如下所示:

<asp:Button runat="server" ID="btnUpdate" meta:resourcekey="btnUpdate" CausesValidation="False"  OnClientClick = "validateAndCloseDirectDebitDialog('vgDirectDebitApplication' , bankInformation);" />

bankInformation是这样定义的变量:

var bankInformation = $('#<%=bankInfoDialog.ClientID%>');

bankInfoDialog是div的ID,由模态显示的控件组成:

<div id="bankInfoDialog" runat="server" class="modal hide fade" tabindex="-1" role="dialog">
    <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" style="display: none">×</button>
        <h1 id="bankInformationDialogHeader"><%=GetLocalResourceObject("BankInfoHeader") %></h1>
    </div>
    <div class="modal-body">
        <ABS:BankInformation runat="server" ID="bankInformation" AllFieldsRequired="True" SetFocusOnError="False" />
    </div>
    <div class="modal-footer">
        <asp:Button runat="server" ID="btnUpdate" meta:resourcekey="btnUpdate" CausesValidation="False"  OnClientClick = "validateAndCloseDirectDebitDialog('vgDirectDebitApplication' , bankInformation);" />
        <button id="btnCancel" runat="server" data-dismiss="modal" aria-hidden="true"><%=GetLocalResourceObject("Cancel")%></button>
    </div>
</div>
<asp:UpdatePanel runat="server" ID="upShortAccountInfo" UpdateMode="Conditional" ChildrenAsTriggers="False" EnableViewState="True" >
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="btnUpdate" EventName="Click" />
    </Triggers>
    <ContentTemplate>
        <ABS:ShortAccountInfo runat="server" ID="shortAccountInfo" />
    </ContentTemplate>
</asp:UpdatePanel>

还有其他方法可以在js中隐藏模态吗?

1 个答案:

答案 0 :(得分:0)

try sending ID instead of object
<asp:Button runat="server" ID="btnUpdate" meta:resourcekey="btnUpdate" CausesValidation="False"  OnClientClick = "validateAndCloseDirectDebitDialog('vgDirectDebitApplication' , 'modalid');" />

And in js

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