0

我有以下代码。

 $(document).ready(function() {
        $('#btnOpen').click(function(e) {
            $('#content').modal({
                onOpen: function(dialog) {
                    dialog.overlay.fadeIn('slow', function() {
                        dialog.data.hide();
                        dialog.container.fadeIn('slow', function() {
                            dialog.data.slideDown('slow');

                        });
                    });
                },
                onClose: function(dialog) {
                    dialog.data.fadeOut('slow', function() {
                        dialog.container.slideUp('slow', function() {
                            dialog.overlay.fadeOut('slow', function() {
                                $.modal.close(); // must call this!
                            });
                        });
                    });
                }
            });

        });
        $('#btnClose').click(function(e) {
            $.modal.close();
        });

如果我使用<a hrf ="#" id="btnOpen">Open</a>,它可以完美运行。如果我用 ASP.net Button 替换 ,则
<asp:Button ID="btnOpen" runat="server" Text="Open" />什么都没有发生...请帮助?

4

3 回答 3

1

ASP.Net 将根据控件的容器自动为服务器端控件生成唯一的 ID。

因此,生成的 HTML 实际上没有#btnOpen元素。

您需要使用 ASP.Net 生成的客户端 ID,如下所示:

$('#<%= btnOpen.ClientID %>').click(...);

或者,在 ASP.Net 4.0 中,您可以设置控件的ClientIDMode属性以防止 ASP.Net 生成唯一 ID:

<asp:Button ID="btnOpen" runat="server" Text="Open" ClientIDMode="Static" />
于 2010-06-09T02:04:26.747 回答
0

问题是 ASP.Net 控件将父容器的名称附加到它们的 ID,因此如果您在生成的页面上查看 HTML 源代码,您将看到按钮的 ID 不是 btnOpen 而是 parentContainerID_btnOpen。

如果您使用的是 ASP.Net 4,则可以通过设置选项使按钮不附加父控件名称,否则您需要更改 javascript 代码以使用正确的 ID。

于 2010-06-09T02:05:51.377 回答
0

这是工作代码:

$('#<%= btnOpen.ClientID %>').click(function(e) {
            e.preventDefault();
            $('#content').modal({
                onOpen: function(dialog) {
                    dialog.overlay.fadeIn('slow', function() {
                        dialog.data.hide();
                        dialog.container.fadeIn('slow', function() {
                            dialog.data.slideDown('slow');

                        });
                    });
                },
                onClose: function(dialog) {
                    dialog.data.fadeOut('slow', function() {
                        dialog.container.slideUp('slow', function() {
                            dialog.overlay.fadeOut('slow', function() {
                                $.modal.close(); // must call this!
                            });
                        });
                    });
                }
            });

        });

只有两个更改 1:我已将名称更改为('#<%= btnOpen.ClientID %>').click(...); 2:我添加了一个 e.preventDefault();

但是,不允许从 asp 按钮回发

于 2010-06-09T03:47:55.323 回答