使用ASP.NET按钮显示的jQuery UI对话框

时间:2010-02-23 19:45:06

标签: c# asp.net jquery-ui dialog

当用户点击ASP.Net按钮时,我正在尝试显示模式对话框。这是我的页面:

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
    <script src="js/jquery-1.2.6.min.js" type="text/javascript"></script>
    <script src="js/jquery-ui-1.6.custom.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function() {

            $("#dialog").dialog({
                bgiframe: true,
                autoOpen: false,
                height: 300,
                modal: true,
                buttons: {
                    'Ok': function() {
                        $(this).dialog('close');
                    },
                    Cancel: function() {
                        $(this).dialog('close');
                    }
                },
                close: function() {
                    ;
                }
            });
        });
        function ShowDialog() {
            $('#dialog').dialog('open');
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="TreeNew" runat="server" Text="New" OnClientClick="ShowDialog();"/>
        <asp:Label ID="Message" runat="server"></asp:Label>
        <div id="dialog" title="Select content type">
            <p id="validateTips">All form fields are required.</p>
            <asp:RadioButtonList ID="ContentTypeList" runat="server">
                <asp:ListItem Value="1">Text</asp:ListItem>
                <asp:ListItem Value="2">Image</asp:ListItem>
                <asp:ListItem Value="3">Audio</asp:ListItem>
                <asp:ListItem Value="4">Video</asp:ListItem>
        </asp:RadioButtonList>
        </div>
    </div>
    </form>
</body>
</html>

当我点击TreeNew按钮时出现模态弹出窗口但是页面会立即回发。

发生了什么事?

6 个答案:

答案 0 :(得分:3)

尝试

OnClientClick="return ShowDialog();"

function ShowDialog() {
            $('#dialog').dialog('open');
            return false;
        }

这会阻止回发。

答案 1 :(得分:3)

虽然添加return false;会解决您的问题(正如其他答案所示),但我认为您最好的办法是使用标准的HTML按钮。在这种情况下没有理由使用ASP.NET控件,因为您不打算回发。

但是,如果您坚持使用ASP.NET按钮,请至少设置UseSubmitBehavior="False",以便按钮呈现为<input type="button"/>而不是<input type="submit"/>

答案 2 :(得分:2)

OnClientClick 需要返回false ,如下所示:

OnClientClick="ShowDialog(); return false;"

按钮默认回发但返回false会阻止默认行为

答案 3 :(得分:1)

您没有从OnClientClick返回false。如果没有显式返回false,则假定在这种情况下为“true”。 OnClientClick的返回值为true表示可以进行回发。尝试将OnClientClick更改为以下内容(在调用ShowDialog()后添加“return false”)

OnClientClick="ShowDialog();return false;"

答案 4 :(得分:1)

这篇文章可能对您有所帮助:using-jquery-modal-dialog-confirmation-with-an-asp-net-server-control

希望这会有所帮助。

答案 5 :(得分:0)

使用preventDefault()jQuery函数来阻止按钮回发

试试这个:

function ShowDialog(evt) {
            evt.preventDefault();
            $('#dialog').dialog('open');
        }