Javascript Don';在jQuery对话框关闭之前是否返回结果?

Javascript Don';在jQuery对话框关闭之前是否返回结果?,javascript,jquery,asp.net-mvc,asp.net-mvc-4,jquery-ui,Javascript,Jquery,Asp.net Mvc,Asp.net Mvc 4,Jquery Ui,我正在尝试根据jQuery对话框选择返回结果。在发送返回声明之前,我一直保持警惕。如何保存返回的结果,直到我在对话框中执行某些操作为止?值将为“真”或“假” function ConfirmDone() { var results; $('<div></div>').appendTo('body') .html('<div><h6>Are you sure

我正在尝试根据jQuery对话框选择返回结果。在发送返回声明之前,我一直保持警惕。如何保存返回的结果,直到我在对话框中执行某些操作为止?值将为“真”或“假”

        function ConfirmDone() {
            var results;
            $('<div></div>').appendTo('body')
               .html('<div><h6>Are you sure you want to lose unsaved changes?</h6></div>')
               .dialog({
                   modal: true, title: 'Delete message', zIndex: 10000, autoOpen: true,
                   width: 'auto', resizable: false,
                   buttons: {
                       Yes: function () {
                           $(this).dialog("close");
                           results=true;
                       },
                       No: function () {
                           $(this).dialog("close");
                           results=false;
                       }
                   },
                   close: function (event, ui) {
                       $(this).remove();
                       results = false;
                   }
               });
            alert(results); //This is calling same when dialog shows up
            return results;

        }

对话框是异步的。您需要传递一个回调函数:

    function ConfirmDone(callback) {
        var results;
        $('<div></div>').appendTo('body')
           .html('<div><h6>Are you sure you want to lose unsaved changes?</h6></div>')
           .dialog({
               modal: true, title: 'Delete message', zIndex: 10000, autoOpen: true,
               width: 'auto', resizable: false,
               buttons: {
                   Yes: function () {
                       $(this).dialog("close");
                       callback(true);
                   },
                   No: function () {
                       $(this).dialog("close");
                       callback(false);
                   }
               },
               close: function (event, ui) {
                   $(this).remove();
                   callback(false);
               }
           });
    }

@Barmar,我不明白重复的帖子会适用于我的代码?我很困惑。抱歉,这是一个糟糕的选择,因为它使用不同的插件复制。但总的想法是对话框是异步的。您的
cofirmdone
函数应该使用回调参数,并在
close:
函数中调用它。有人帮助,您还有其他选项吗?也许此搜索中的一个问题会有帮助:我需要从
ConfirmDone(函数(成功){}返回值吗
method?不,您不需要。回调是异步运行的,它不会等待用户响应对话框。您不能等待Javascript中的用户交互,您只需提供在用户执行某项操作时运行的函数。但我是这样调用的`new AjaxOptions(){…OnBegin=“return ConfirmDone()”},你不能这样做。一切都必须通过回调来完成。我的
OnBegin
是expect results back。请查看更新的帖子。我喜欢这样,但不起作用。
    function ConfirmDone(callback) {
        var results;
        $('<div></div>').appendTo('body')
           .html('<div><h6>Are you sure you want to lose unsaved changes?</h6></div>')
           .dialog({
               modal: true, title: 'Delete message', zIndex: 10000, autoOpen: true,
               width: 'auto', resizable: false,
               buttons: {
                   Yes: function () {
                       $(this).dialog("close");
                       callback(true);
                   },
                   No: function () {
                       $(this).dialog("close");
                       callback(false);
                   }
               },
               close: function (event, ui) {
                   $(this).remove();
                   callback(false);
               }
           });
    }
ConfirmDone(function(success) {
    alert("You said: " + (success ? "Yes" : "No"));
});