Jquery Modal弹出窗口在第二次单击时打开,而不是先打开

时间:2011-05-10 14:24:41

标签: asp.net-ajax jquery-ui-dialog partial-postback

我遇到了jquery模态对话框。我的模态显示通过在按钮上单击两次并破坏页面上的标记 我读了没有包括堆栈溢出的帖子 this

AND this

但我的问题与两者都不匹配。所以我请求你不要对这个问题投反对票。

我使用以下代码来显示模态

<script type="text/javascript">

        function overlayclickclose() {
            if (closedialog) {
                jQuery('#mydialog').dialog('close');
                             }
            closedialog = 1;
                                    }

            jQuery('#mydialog').dialog({
            bgiframe: true,
            autoOpen: false,
            modal: true,
            width: 900,
            height: 400,
            resizable: false,
            open: function() { closedialog = 1; jQuery(document).bind('click', overlayclickclose); },
            focus: function() { closedialog = 1; },
            close: function() { jQuery(document).unbind('click'); }
            });
            </script> 

现在这里是我的div显示为弹出窗口

<div id="mydialog"><NL:TemplatePicker ID="TemplatePicker1" Runat="server"></NL:TemplatePicker></div>

我正在点击按钮调用模式,通过在asp.net代码中调用它,就像这样

protected void btnChooseTemplate_Click(object sender, EventArgs e)
    {
        ScriptManager.RegisterClientScriptBlock(this.Page, Page.GetType(), "change", "jQuery('#mydialog').dialog('open');closedialog = 1;jQuery('#mydialog').parent().appendTo(jQuery('form:aspnetForm'));", true);
    }

我的网页使用了ajax updatepanel。

任何帮助都会被视为。如果你需要更多的东西来更好地了解这个问题,请告诉我。

由于

1 个答案:

答案 0 :(得分:1)

@Devjosh:看起来你正在btnChooseTemplate点击中注册打开的对话框。这意味着在第一次单击之后才会注册打开的脚本。尝试将客户端脚本块注册移动到页面加载功能中,以便每次加载页面时都会注册它,每次都为第一次单击做好准备。