我使用了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
希望有人告诉我如何解决问题,所以我可以关闭弹出页面并重新加载它。提前谢谢。
答案 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上响应重定向父页面。谢谢。