0

同様の質問を確認しましたが、解決策が得られませんでした...そのため、この質問を投稿しました..投票する代わりに解決策を教えてください...

ダイアログ内に aspx ページを読み込んでいます。初めて正常に動作しますが、2回目に閉じて再度開くと、開かれません..

これは、ダイアログのスクリプトを処理している私の default.aspx です。

       <html>
        <head>
            <script type="text/javascript">
                    $(document).ready(function() {
                    $("#thedialog").dialog({
                            autoOpen: false,
                            modal: true,
                            position: 'center',
                            width: 900,
                            open: function() {
                            $('#thedialog').load("AddDetails.aspx");
                            }
                        });

                         $('#link').click(function() {
                          $('#thedialog').dialog('open');

                        });

                    });
             </script>
        </head>
        <body>
            <div id="thedialog" style="display: none; overflow: hidden">
           <span id="link" style="color: #88b807; margin-left: 839px;
                            margin-top: -12px; cursor: pointer; display: block">Create</span>
</div>
        </body>
        </html>

これは私の AddDetails.aspx です

<body>
    <form id="form1" runat="server">
    <div>
        <table id="table" style="border-spacing: 7px 7px; margin-left: 5px">
            <tr>
                <td>
                    <span class="SubHeading">Private Space Name </span>
                </td>
                <td>
                    <asp:TextBox ID="txt_spacename" runat="server" />
                </td>
            </tr>
            <tr>
                <td>
                    <span class="SubHeading">Private Space Description </span>
                </td>
                <td>
                    <asp:TextBox ID="txt_spacedesc" TextMode="MultiLine" runat="server" />
                </td>
            </tr>
</table>
</div>
</form>
</body>

ダイアログを開くだけでページをロードする代わりに、ダイアログが開かれますが、ダイアログ内にページをロードすると開かれません...

ヘルプ...

4

1 に答える 1

0

更新されたコードから、クリックしているリンクは、ajax 呼び出しを読み込んでいる div 内にあるように見えます。この場合、ダイアログをロードするためのクリック イベントは、(最初のページのロード時に) 1 回だけバインドされます。リンク要素がもう一度読み込まれると (読み込み中の ajax 応答にあると想定しています)、クリック イベントがバインドされなくなります。

これを回避するには、次のいずれかを実行できます。

  1. リンクを #thedialog div 要素の外に移動します (現在、適切に閉じられていないようです)。
  2. 次のように、ページ (DOM) が変更された場合でもそのタイプの要素でクリック イベントが発生するように、JavaScript を修正してデリゲートを追加します。

    $("#thedialog").delegate("#link", "click", function () {
        $('#thedialog').dialog('open');
        return false;
    });
    

    ただし、ダイアログ自体に #link 要素がある場合、オプション 2 では奇妙な結果が生じる可能性があります。これで問題が解決する場合は、最初のオプションを使用します。


アップデート:

上記は私のブラウザで動作しますが、次のコードを試して動作するかどうかを確認するには、jquery / jquery ui のバージョンが古いか、最新でない可能性があります。

<html>
<head>
<title>Test dialog page</title>
<link href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" rel="stylesheet"
    type="text/css" />
<script src="http://code.jquery.com/jquery-1.8.3.js" type="text/javascript"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function () {
        $("#thedialog").dialog({
            autoOpen: false,
            modal: true,
            position: 'center',
            width: 900,
            height: 300,
            open: function () {
                $('#thedialog').load("AddDetails.aspx");
            }
        });

        $('#link').click(function () {
            $('#thedialog').dialog('open');
        });

    });
</script>
</head>
<body>
<div id="thedialog" style="display: none; overflow: hidden">
</div>
<span id="link" style="color: #88b807; cursor: pointer; display: block">Create</span>
</body>
</html>

私が試す/お勧めする他のこと:

  • AddDetails.aspx からラッピング ボディ タグを削除します (ajax 以外の方法で使用している場合を除く)。また、マスター ページを参照していないことも確認してください。
  • ページで他の JavaScript が実行されていないことを確認してください。たとえば、AddDetails ページでスクリプトが参照されていません。
  • それでも問題が解決しない場合は、Firebug または別のブラウザーで同等のコンソールを調べてみてください。エラーが報告されていますか、それともサイレントに失敗していますか?
于 2012-11-30T15:45:36.327 に答える