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 ボタンに置​​き換えて
<asp:Button ID="btnOpen" runat="server" Text="Open" />も、何も起こりませんでした...何か助けてください。

4

3 に答える 3

1

ASP.Net は、コントロールのコンテナーに基づいてサーバー側コントロールの一意の ID を自動的に生成します。

#btnOpenしたがって、生成された HTML には実際には要素がありません。

次のように、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 を使用している場合は、オプションを設定してボタンに親コントロール名を追加しないようにすることができます。それ以外の場合は、適切な ID を使用するように JavaScript コードを変更する必要があります。

于 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!
                            });
                        });
                    });
                }
            });

        });

2 つの変更のみ 1: 名前を変更しました('#<%= btnOpen.ClientID %>').click(...); 2: 追加しました e.preventDefault();

ただし、ASP ボタンからのポストバックは許可されていません

于 2010-06-09T03:47:55.323 に答える