我正在使用jquery UI的标签。当用户切换标签时,我正在检查未保存的更改,并相应地提示用户。但是,在用户甚至单击“是”或“否”之前,无论如何都会加载选项卡。有没有人知道我怎么能让我的函数不返回任何东西,直到结果从我的fancybox对话框返回?
你可以看到我在CheckSomething()中尝试了几种不同的方法来返回我的布尔值。
$("#myTabs").tabs({
select:
function (event, ui) {
return CheckSomething();
},
show:
function (event, ui) {
//do some stuff
}
});
function CheckSomething() {
var loadMyTab = true; //If I set this to false, then it always returns false.
if (myCondition) {
//Show a FancyBox prompt.
if (fancyYes) {
//return true;
loadMyTab= true;
}
else {
//return false;
loadMyTab = false;
}
}
else {
//return true;
loadMyTab = true;
}
return loadMyTab;
}
答案 0 :(得分:2)
使用标准确认而不是花哨的工作是否可以成为快速解决方案? http://jsfiddle.net/nuywj/
答案 1 :(得分:1)
我最终选择了标准的javascript确认框,而不是FancyBox。这解决了我的问题,因为确认会阻止执行代码:
function CheckSomething() {
if (myCondition) {
return confirm("Are you sure you want to change tabs without saving?");
}
else {
return true;
}
}