我可以在javascript中获得两个连续的对话框吗?

时间:2009-10-08 17:23:01

标签: asp.net javascript dialog

当用户点击提交时,我需要检查两个不相关的条件,并请求每个条件的用户反馈。

我可以让一个jquery对话框工作得很好但我有时需要连续两个,然后让它完成按钮事件。

这是要点: 我有按钮

<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />

然后一些Jquery检查某个条件,如果为true则会弹出一个对话框。如果对话框打开,我返回false,因此原始点击事件不会发生,但在大多数情况下我想让它通过:

 $("#<%=btnSubmit.ClientID %>").click(
        function() {
           if (Condition) {
                $('#Dialog').dialog('open');
                return false;
            }
            return true;
        }
        );

我没有使用常规对话框按钮,而是使用另一个asp:按钮在代码隐藏中调用不同的OnClick事件:

$("#Dialog").dialog({
            bgiframe: true,
            autoOpen: false,
            height: 90,
            width: 450,
            modal: true,
            close: function() {}
<div id="Dialog">
   <asp:Button  ID="Button1" runat="server" Text="OK" OnClick="btnDeleteSomethingThenSubmit_Click" />
    <input type="button" value="Cancel" id="btnCancelDialog" />  
</div>

这一切都很棒。无论如何都有效。但是我还需要检查另一个条件,使用不同的对话框,但这次只是一个是/否标志,我不需要点击服务器端事件,所以如何让一个先弹出,等待响应并设置一个值,弹出第二个,然后转到OnClick事件?类似的东西:

$("#<%=btnSubmit.ClientID %>").click(
        function() {
           if (OtherCondition) {
                $('#Dialog2').dialog('open');

            }
           if (Condition) {
                $('#Dialog').dialog('open');
                return false;
            }
            return true;
        }
        );

这显然不起作用。

2 个答案:

答案 0 :(得分:1)

你能不能拥有:

$("#<%=btnSubmit.ClientID %>").click(
  function() {
    var success = true;
     if (OtherCondition) {
       $('#Dialog2').dialog('open');
       success = false;
     }
     if (Condition) {
       $('#Dialog').dialog('open');
       success false;
     }
     return success;
    }
  );

基本上,捕获一个在变量中返回false的对话框,否则返回true并允许表单提交?

答案 1 :(得分:0)

jQuery对话框是非阻塞的,并且不像本机JavaScript对话框那样,这就是你无法做到的原因

$("#<%=btnSubmit.ClientID %>").click(function() {
    if (OtherCondition) {
        $('#Dialog2').dialog('open');
    }
    if (Condition) {
        $('#Dialog').dialog('open');
        return false;
    }
    return true;
});

您需要使用close callback,如下所示:

$("#<%=btnSubmit.ClientID %>").click(function() {
    if (OtherCondition) {
        $('#Dialog2').dialog('open', {
            close: function() {
                if (Condition) {
                    $('#Dialog').dialog('open', {
                        // Call some function here to report the status
                        close: function() {}
                    });
                } else {
                    // Call some function here to report a different status
                }
            }
        });
    }
});