jquery - 如何使对话框按钮等待来自另一个对话框的响应?

时间:2013-02-02 04:20:48

标签: javascript jquery dialog

更新1:我已经完成了回调功能。 这是我的解决方案。我只是在打开dialog2时添加一个回调函数,并在对话框2中接收用户更改的隐藏元素。现在一切都完成了。谢谢你!

http://jsfiddle.net/N6qbR/2/

-------老问题----------------

我的英语不好,所以我很容易写。

我正在使用Jquery Dialog,我想显示多个对话框。 (dialog1打开dialog2打开对话框3 ...)

但问题是当我打开dialog1然后再打开dialog2(确认对话框,以便用户可以在dialog2中选择是/否并将值返回到dialog1)。

我知道Javascript是异步的,所以当用户打开dialog1并单击打开dialog2时,它不会等到dialog2中的事件完成。

Here is my source code(简单逻辑)

$("#dialogForm").dialog({           
        autoOpen: false,
        height: height,
        width: width,
        modal: true,        
        close: function() // Hàm này được gọi tự động khi đóng dialog
        {           
            //abc();
            // Sau khi thêm mới thành công thì reset lại form
            resetForm();
            $("#dialogForm").dialog( "close" );
        },          
        buttons: {
            "Ok": function() {              
                var choose = showDialogConfirm(250, 200, "Bạn có đồng ý thêm?", test);      
                if(choose == true)
                {
                    // do some good
                }

            },
            "Cancel": function() {
                $("#dialogForm").dialog("close");
            }
        }
    }); 


    $("#dialogForm").dialog("open");

function showDialogConfirm(width, height, message)
{
    $("#dialogConfirm").toggle();           
    $("#dialogConfirm").dialog({            
        autoOpen: false,
        height: height,
        width: width,
        modal: true,        
        close: function() // Hàm này được gọi tự động khi đóng dialog
        {           
            $("#dialogConfirm").dialog( "close" );
        },          
        buttons: {
            "Yes": function() {         
                return true;
                $("#dialogConfirm").dialog("close");
            },
            "No": function() {
                return false;
                $("#dialogConfirm").dialog("close");                    
            }
        }
    });

    $("#dialogConfirmContent").html(message);   
    $("#dialogConfirm") 
        .dialog("open");
}

1 个答案:

答案 0 :(得分:0)

绝对应该在对话框callback functions中编写代码。在dialog1中,您只需弹出dialog2并选择确认对话框,因此它应该是模型对话框,您将代码绑定到OK button,然后您可以get “正确”的结果。通过添加新参数更改showconfirmdialogcallbackfunction