Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选择答案前返回的对话框_Javascript_Jquery - Fatal编程技术网

Javascript 选择答案前返回的对话框

Javascript 选择答案前返回的对话框,javascript,jquery,Javascript,Jquery,我会弹出一个对话框,询问用户一个问题,其功能如下: function confirmBox2(action) { var message = ""; if (action == "Quit") { message = "Are you sure you want to quit without saving?"; } else if (action == "Delete") { message = "Confirm you

我会弹出一个对话框,询问用户一个问题,其功能如下:

function confirmBox2(action) {

    var message = "";

    if (action == "Quit") {

        message = "Are you sure you want to quit without saving?";

    }
    else if (action == "Delete") {

        message = "Confirm you want to Delete?";

    }
    else if (action == "Save") {

        message = "Are you sure you want to Save Changes?";

    }


    $('body').append('<div id="dialog-box" style="display:none;">' + message + '</div>');

    $('#dialog-box').dialog({
        modal: true,
        buttons: {
            Yes: function () {

                $(this).dialog("close");
                $('#dialog-box').remove();

                return true;
                //history.back(-1);

            },
            NO: function () {
                $(this).dialog("close");
                $('#dialog-box').remove();

                return false;

            }
        }
    });
}
我遇到的问题是,代码是异步运行的,而不是等待对话框的答案被选中,我该如何解决这个问题


谢谢

我修改了确认功能以接受另外两个参数。其中一个是单击“是”时要调用的函数的名称,另一个是单击“否”时要调用的函数的名称。您以前的版本是打开对话框,然后立即结束函数,因为对话框调用不是阻塞或同步调用,所以函数不会等到您关闭对话框后才返回。这就是为什么你没有得到结果。使用此方法,您可以创建一个处理“是”单击的函数,一个处理“否”单击的函数,并在单击相应按钮时调用它们

function confirmBox2(Action, YesCallback, NoCallback) {
    var message = "";
    if (Action == "Quit") {
        message = "Are you sure you want to quit without saving?";
    } else if (Action == "Delete") {
        message = "Confirm you want to Delete?";
    } else if (Action == "Save") {
        message = "Are you sure you want to Save Changes?";
    }

    $('body').append('<div id="dialog-box" style="display:none;">' + message + '</div>');

    $('#dialog-box').dialog({
        modal: true,
        buttons: {
            "Yes" : function () {
                $(this).dialog("close");
                $('#dialog-box').remove();
                YesCallback();
            },
            "No" : function () {
                $(this).dialog("close");
                $('#dialog-box').remove();
                NoCallback();
            }
        }
    });
}

function onDialogYes() {
    // handle the "yes" click here
}

function onDialogNo() {
    // handle the "no" click here
}

confirmBox2("Quit", onDialogYes, onDialogNo);
函数confirmBox2(操作、yescalback、NoCallback){
var message=“”;
如果(操作==“退出”){
message=“您确定要不保存而退出吗?”;
}else if(操作==“删除”){
message=“确认要删除吗?”;
}否则如果(操作==“保存”){
message=“您确定要保存更改吗?”;
}
$('body')。追加(''+消息+'');
$(“#对话框”)。对话框({
莫代尔:是的,
按钮:{
“是”:函数(){
$(此).dialog(“关闭”);
$(“#对话框”).remove();
YesCallback();
},
“否”:函数(){
$(此).dialog(“关闭”);
$(“#对话框”).remove();
NoCallback();
}
}
});
}
函数onDialogYes(){
//处理“是”的问题单击此处
}
函数onDialogNo(){
//处理“否”问题单击此处
}
confirmBox2(“退出”,onDialogYes,onDialogNo);
您也可以这样做,而无需将回调函数作为参数传递,如下所示

function confirmBox2(Action) {
    var message = "";
    if (Action == "Quit") {
        message = "Are you sure you want to quit without saving?";
    } else if (Action == "Delete") {
        message = "Confirm you want to Delete?";
    } else if (Action == "Save") {
        message = "Are you sure you want to Save Changes?";
    }

    $('body').append('<div id="dialog-box" style="display:none;">' + message + '</div>');

    $('#dialog-box').dialog({
        modal: true,
        buttons: {
            "Yes" : function () {
                $(this).dialog("close");
                $('#dialog-box').remove();
                onDialogYes();
            },
            "No" : function () {
                $(this).dialog("close");
                $('#dialog-box').remove();
                onDialogNo();
            }
        }
    });
}

function onDialogYes() {
    // handle the "yes" click here
}

function onDialogNo() {
    // handle the "no" click here
}

confirmBox2("Quit");
函数confirmBox2(操作){
var message=“”;
如果(操作==“退出”){
message=“您确定要不保存而退出吗?”;
}else if(操作==“删除”){
message=“确认要删除吗?”;
}否则如果(操作==“保存”){
message=“您确定要保存更改吗?”;
}
$('body')。追加(''+消息+'');
$(“#对话框”)。对话框({
莫代尔:是的,
按钮:{
“是”:函数(){
$(此).dialog(“关闭”);
$(“#对话框”).remove();
onDialogYes();
},
“否”:函数(){
$(此).dialog(“关闭”);
$(“#对话框”).remove();
onDialogNo();
}
}
});
}
函数onDialogYes(){
//处理“是”的问题单击此处
}
函数onDialogNo(){
//处理“否”问题单击此处
}
确认2(“退出”);

您可能希望将
操作
传递到按钮的事件处理程序中,以便了解您正在处理的操作。

我调用了您的函数并在我身边工作的锚定单击事件可能重复…怎么了?@DipeshParmar它无法工作。他试图以同步方式返回异步事件的结果。他需要2个回调函数(每个按钮一个)才能工作。@Archer有什么例子吗?
function confirmBox2(Action) {
    var message = "";
    if (Action == "Quit") {
        message = "Are you sure you want to quit without saving?";
    } else if (Action == "Delete") {
        message = "Confirm you want to Delete?";
    } else if (Action == "Save") {
        message = "Are you sure you want to Save Changes?";
    }

    $('body').append('<div id="dialog-box" style="display:none;">' + message + '</div>');

    $('#dialog-box').dialog({
        modal: true,
        buttons: {
            "Yes" : function () {
                $(this).dialog("close");
                $('#dialog-box').remove();
                onDialogYes();
            },
            "No" : function () {
                $(this).dialog("close");
                $('#dialog-box').remove();
                onDialogNo();
            }
        }
    });
}

function onDialogYes() {
    // handle the "yes" click here
}

function onDialogNo() {
    // handle the "no" click here
}

confirmBox2("Quit");