【问题标题】:jquery - How to make dialog button wait response from another dialog?jquery - 如何使对话框按钮等待来自另一个对话框的响应?
【发布时间】:2013-02-02 14:54:00
【问题描述】:

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

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

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

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

我正在使用 Jquery Dialog,我想显示多个对话框。 (对话框 1 打开对话框 2 打开对话框 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");
}

【问题讨论】:

  • javascript 不是异步的。
  • 你的小提琴根本不起作用
  • 这是一个简单的逻辑:) 它不能工作。
  • @charlietfl 我敢肯定你知道 OP 的意思(对话不是同步的),你只是想变得更加挑剔。
  • @JuanMendes 触发对话框的事件是同步的,不确定你的意思是它们不是。对话框元素在 OP 案例中也始终存在

标签: javascript jquery dialog


【解决方案1】:

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

【讨论】:

  • 谢谢,但你能告诉我如何制作回调函数吗?我是 Jquery 的新手。
  • 我搜索了回调函数。谢谢你的想法。我会试试的。
  • 对不起哥们,我在中国,你知道我在睡觉。应该是这样的。显示对话框(x,x,回调函数)。然后在对话框中那个按钮: ok: function(){callbackfunc()};最喜欢这样。
猜你喜欢
  • 2013-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-22
  • 1970-01-01
相关资源
最近更新 更多