在用户控制页面上打开时,jquery对话框没有关闭

时间:2018-05-19 19:54:33

标签: javascript jquery asp.net

我使用了jQuery对话框。父级具有用户控件,其具有用于在单击时打开弹出页面的图像。 aspx页面有取消按钮来关闭jquery方法并且它是有效的。我在父页面上添加了我的jquery文件。我把对话框div放在父页面上。

问题是关闭jquery对话框并重新加载父对象。如果我在弹出页面的标题上添加了我的jquery文件,则会调用该函数,但错误是:

  

JavaScript运行时错误:对象不支持属性或方法   '对话框&#39 ;. “取消”按钮也没有关闭jquery。

但是,当我在弹出页面上取消注释我的jquery文件时,取消按钮会起作用。但是关闭弹出窗口并重新加载父页面的另一个按钮,没有调用jquery方法,弹出页面重新加载而没有关闭。

jQuery中有我的代码

function openmodel(url, name, width, height) {
  var maxHeight = dialogMaxHeight(height);
  var dialogHeight = height;
  if (height > maxHeight)
    dialogHeight = maxHeight;   

  $('#dialog-model').dialog({
    my: "center",
    at: "center",
    of: window,
    autoOpen: false,
    resizable: true,
    max_height:'auto',      
    height: 'auto',
    width: width,
    title: name,
    modal: true,
    draggable: true,        
    open: function( ) { 
        $(this).load(url);           
    }, 
 });

$('#dialog-model').dialog('open');
return false;
}

function CloseDialogmodel() {    
    $('#dialog-model').dialog({
        autoOpen: false,
        resizable: true,     
        title: name,
        modal: true, 
    });

    $('#dialog-model').dialog('close');
 }


function CloseDialogModelAndReloadParent() {    
   CloseDialogmodel(); }

aspx页面背后的代码:

 Private Sub btnDone_Click(sender As Object, e As EventArgs) Handles btnDone.Click
 'do something on server
  Dim cs As ClientScriptManager = Page.ClientScript
  cs.RegisterStartupScript(Page.GetType (), "closeandload", "CloseDialogBoxAndReloadParent();", True)
End Sub

希望有人告诉我如何解决问题,所以我可以关闭弹出页面并重新加载它。提前谢谢。

4 个答案:

答案 0 :(得分:2)

我有同样的问题,我按照以下方式处理:

<强> Child.aspx-标记

<div class="button">   
    <asp:Button ID="btnDone" Text="Done" runat="server" />

    <a ID="lnkClose" onclick="DecideForParent(false,true);return false;">
        Close
    </a>
</div>

<script type="text/javascript">
    function DecideForParent(AllowReferesh, AllowClose) {
        try {
            if (AllowReferesh)
                window.opener.HandlePopupResult();
        }
        catch (ex) {
        }
        // Close dialog
        if (AllowClose)
            $('#dialog-model').dialog('close');
    }
</script>

Child.aspx-Code落后(C#)

private void btnDone_Click(object sender, EventArgs e) 
{
    // Do something ...
    Page.ClientScript.RegisterStartupScript(this.GetType(), "CallreturnToParent", "$(window).load(function () { DecideForParent(true,true);return false;});", true);
}

<强> Parent.aspx-标记

<script type="text/javascript">
    function HandlePopupResultLURow() {
        document.getElementById('<%=btnRefresh.ClientID%>').click();
    }
</script>

Parent.aspx-Code落后(C#)

private void btnRefresh_Click(object sender, EventArgs e) 
{
    // Refresh your data        
}

答案 1 :(得分:1)

如果我猜对了,你就像这样创建对话

$( "#dialog-confirm" ).dialog({
  //....
  modal: true,
  buttons: {
    "Do Action": function() {
              CloseDialogBoxAndReloadParent();
    },
    "Cancel" : function() {
     CloseDialogBox();

    }
  }
});

});

如果将元素添加到参数

 "Cancel" : function() {
     CloseDialogBox(this);

    }

您可以访问正确的元素

function CloseDialogBox(element) {
$(element).dialog('close');

}

答案 2 :(得分:0)

function CloseDialogmodel () {
    $('#dialog-model').dialog({ autoOpen: false, resizable: true, title: name, modal: true, });
    $('#dialog-model').modal('hide');
}

答案 3 :(得分:0)

最后,我明白了。我只需要在btnDone_Click上响应重定向父页面。谢谢。