我已经阅读了很多关于jquery模式对话框的页面,但是仍然没有找到适合我需要它的东西。
如果用户进行了更改并点击了我们网站上的内部链接,我想要一个对话框,弹出3个按钮选项 - 保存,放弃和取消。如果他们点击保存,它将调用保存功能,然后离开页面。
但页面设置了选项卡,每个选项卡将不同的php页面加载到母版页中。链接不是硬链接,也不会重新加载页面。它们就像页内锚链接(然后加载一个php页面)。所以我无法捕获锚请求并稍后将其发送到地址栏。
我已经有了对话框,设置为模态。但是现在,当我单击另一个选项卡时,它会加载选项卡,同时弹出我的对话框。我希望它不会加载选项卡,直到在对话框中单击一个按钮。
confirm()函数完美地完成了这一操作。但我的模态对话框允许加载其他选项卡。你能帮我设置一个模态对话框,就像这个实例中的confirm函数一样吗?
这是我的Javascript函数:
function fw_chkTabStatusFmla() {
if (jsg_fwTabWatchFmla == false) {
$(function() {
$( "#tabWarnFmla" ).dialog({
resizable: false,
height:240,
width:400,
modal: true,
buttons: {
Cancel: function() {
$( this ).dialog( "close" );
},
"Discard": function() {
$( this ).dialog( "close" );
//discard changes and continue
},
"Save": function() {
$( this ).dialog( "close" );
//function to save changes and continue
},
}
});
});
}
}
这是我正在使用的旧版本。它会正确停止行为,但只允许两个按钮。
function fw_chkTabStatusFmla() {
if (jsg_fwTabWatchFmla == false) {
var x = confirm("If you leave this tab without saving you may lose your changes.\n\nClick 'OK' to proceed without saving.");
if (x == true) {
jsg_fwTabWatchFmla = true;
setConfirmUnload(false);
return true;
} else {
return false;
}
}
}
在相关字段中进行更改时,我将jsg_fwTabWatchFmla变量设置为false。
这是我必须运行的功能。
$(document).ready( function() {
$('#tabs').tabs({
select: function(event, ui) {
return fw_chkTabStatusFmla();
}
});
}
答案 0 :(得分:1)
我认为您需要更改标签的操作。我不确定你正在使用什么Tabs插件。但是使用jQuery UI Tabs我会使用这种方法:
http://api.jqueryui.com/tabs/#event-beforeActivate
beforeActivate(event,ui)类型:tabsbeforeactivate
激活标签后直接触发。可以取消以防止选项卡激活。如果选项卡当前已折叠,则ui.oldTab和ui.oldPanel将为空jQuery对象。如果选项卡正在折叠,则ui.newTab和ui.newPanel将为空jQuery对象。