关闭窗口前显示提示

时间:2013-12-10 13:25:09

标签: javascript jquery alerts msgbox

我正面临显示警告窗口的一些问题。我想要的是显示警告窗口,然后根据用户的输入我需要执行一些操作。但我面临的问题是我从函数中收到null作为返回值。

PS:我正在使用Jquery msgbox v1.0进行提醒。

这是调用函数代码块 -

var retVal = "No"; //don't save
    if($(this).parent().parent().hasClass("modified")){
        retVal = showPrompt();//Null returned
    }
    alert(retVal);
    switch (retVal) {
    case "Yes":
        //show download xml file on machine.            
        removeWorkspace(this);
        break;
    case "No":
        removeWorkspace(this);
        break;
    case "Cancel": 
        //don't do anything
        break;      
    }   
    event.stopPropagation();
}); 

被叫函数:

function showPrompt(){
var resultVar = null;
$.msgBox({
    title: "Are you sure",
    content: "Do you want to save your work?",
    type: "confirm",
    buttons: [{ type:"submit", value: "Yes"},
            {type: "submit", value: "No"},
            {type: "cancel", value: "Cancel"}] 
}, function(result){
    resultVar = result;
});

    return resultVar;

}

提前致谢。

2 个答案:

答案 0 :(得分:1)

showPrompt()函数中,resultVar从回调中获取其值,但该函数在执行回调之前立即返回,这就是resultVar仍然{的原因{ {1}}返回时的{1}}。

为什么不将它移动到从回调内部调用的另一个函数,而不是尝试按原样运行切换?

null

答案 1 :(得分:0)

msgBox的行为不是alertconfirm:调用时,它不会挂起当前的执行线程。

您的功能在用户点击任何按钮之前返回。

解决此问题的最简单方法是从“成功”回调中调用removeWorkspace函数:

function showPrompt(ws){
    $.msgBox({
        title: "Are you sure",
        content: "Do you want to save your work?",
        type: "confirm",
        buttons: [{ type:"submit", value: "Yes"},
                  {type: "submit", value: "No"},
                  {type: "cancel", value: "Cancel"}] 
    , success: function(result){
        switch result {
            case "Yes" :
                removeWorkspace(ws);
                break;
            case "No" :
                removeWorkspace(ws);
                break;
        }
    }});
}

// change the calling site :
if($(this).parent().parent().hasClass("modified")){
    showPrompt(this);
} else {
    // default action :
    removeWorkspace(this);
}