【发布时间】:2017-03-27 10:18:26
【问题描述】:
function InvokePage() {
var layerDlg = $("#Layer").dialog({
position: { my: "top", at: "bottom", of: $("header") },
height: "auto",
width: "auto",
maxWidth: 400,
modal: true,
appendTo: "form",
resizable: false,
open: function (){},
beforeclose: function()
{
var a = 1;
},
close: function () {
if (g_changesMade) {
//CODE FOR NOT CLOSING POPUP
InvokeContinueWithoutSavePopUp();
}
else
{
//CODE FOR CLOSING POPUP
$(this).parent().replaceWith("");
layerDlg = null;
}
}
});
}
所以...我正在打开一个带有“Layer”div 的 Jquery Dialog 弹出窗口,当用户单击弹出窗口右上角的“X”按钮时,代码会跳转到“close()”函数...但是弹出窗口已经关闭,我只想在 g_changesMade = FALSE 时关闭弹出窗口,
如果 g_changesMade 为 TRUE,则打开 InvokeContinueWithoutSavePopUp();,我尝试在关闭之前使用,但它根本没有进入该函数。
因此,解决方案是更改单击“X”时调用的函数以检查 g_changesMade 的值并执行必要的逻辑, 那么我怎样才能正确地关闭'x'呢?这可能吗?
【问题讨论】:
-
尝试在“关闭”回调函数中返回false
-
beforeClose 应该在关闭之前调用,在你的代码中,“beforecolse”'c' 是小写的,这对于 jQuery 对话框来说是无效的函数,它应该是“beforeClose”。试试这行“beforeClose: function(){ return g_changesMade; }”
标签: javascript jquery asp.net dialog