【发布时间】:2018-10-03 20:59:58
【问题描述】:
这是我的代码。我试图阻止单击的选项卡加载,直到我从对话框中得到响应。此外,如果我单击取消,我想返回到先前选择的选项卡。目前我设置它的方式会创建一个循环(我用我的蹩脚代码打破了它)。
从我的 jsfiddle 示例中可以看出,代码确实停止了。但是,您会在背景中注意到选项卡确实更改为单击的选项卡,因此如果单击取消,则背景将闪烁。我正在努力避免这种情况。
谢谢。
//
var runOnceDammit;
$(document).ready(function() {
$(".hideT").button();
$("#tabs").tabs();
$("#tabs").tabs("disable", "#tabs-4");
$('.ms-formtable').appendTo($('#tabs-1'));
$("#tabs").on("tabsbeforeactivate", function(event, ui) {
if (runOnceDammit == true) {
runOnceDammit = false;
return;
}
var active = $("#tabs").tabs("option", "active");
var dialResults = $.when(showDialog());
dialResults.done(function(data) {
if (data) {
$('.ms-formtable').appendTo(ui.newPanel);
if (ui.newPanel.is("#tabs-2")) {
//do stuff
} else if (ui.newPanel.is("#tabs-3")) {
//do stuff
} else if (ui.newPanel.is("#tabs-1")) {
//do stuff
}
return;
} else {
ui.newTab.blur(); //trying to remove higlight from tab
runOnceDammit = true
$("#tabs").tabs({
active: active
}); //activate previous tab
return;
}
});
//return;
});
}); //End DocReady!
//
//
function showDialog() {
var dfd = $.Deferred();
var results;
$('#dialog').dialog({
dialogClass: "no-close",
title: "Fanciful Dialog Box",
modal: true,
draggable: false,
buttons: [{
text: 'Confirm',
icons: {
primary: "ui-icon-check"
},
click: function() {
results = true;
$(this).dialog('close');
}
}, {
text: 'Cancel',
icons: {
primary: "ui-icon-cancel"
},
click: function() {
results = false;
$(this).dialog('close');
}
}],
close: function(event, ui) {
dfd.resolve(results);
}
});
return dfd.promise()
}
【问题讨论】:
-
欢迎来到 Stack Overflow。选项卡使用超链接链接到锚点。防止这种情况的最好方法是创建一个
click回调,以防止超链接的默认功能。我会扩展我的答案。
标签: javascript jquery jquery-ui jquery-ui-dialog jquery-ui-tabs