3

jQueryダイアログのコンテンツに使用しているフォームとそのフォーム内のdivがあります。私の目標は、ダイアログをポップアップさせ、ユーザーがテキストボックスとテキストエリアに情報を入力し、フォームを送信してそのデータをコードビハインドで利用できるようにすることですが、その後、ダイアログ(ページ)を再度開くことができます。送信後も稼働し続けます)、新しいデータを入力し、必要に応じてフォームを再送信します。

私が実行した場合:

$('div#mydialog').appendTo($('form#foo'));

その後:

 $('div#mydialog').dialog('open');

ダイアログはボタンのみで表示され、その後ろにdivが表示され、ユーザーはアクセスできません。(要するに、それはUIウィジェットのクラスター性交のように見えます)

フォーム(最初の場所)にdiv#mydialogを追加してから、.dialog('open')を呼び出すと、このような動作が発生するのはなぜですか。また、フォームを追加した後、正常に開くにはどうすればよいですか。 form#fooを使用して、ユーザーのデータをサーバーに送信しますか?

前もって感謝します

編集:何らかの理由で、ダイアログを最初に開いた後、ダイアログが追加されていないようです。つまり、何度も開いたり、編集したり、閉じたりします。ユーザーが[送信]をクリックし、divがフォームに追加されます。次に、ダイアログ(「開く」)をもう一度試行すると、Firebugは、現在の場所に正しく配置されたままであることを示します。フォーム-jQueryは、それを再度移動しようとはせず、代わりにインラインスタイルを変更するだけのようです。なぜそうなのか誰か知っていますか?

編集2:私のhtml /スクリプトのどれだけがあなたを助けるかわかりません、それは基本的にあなたがそれが何であるかを想像するものです:

    <form id="foo"><! -- some form stuff -->
  <div id="stufftoputindialog" style="display:none;">
    <!-- text boxes/textareas to put in dialog -->
  </div>
</form>

    $('#stufftoputindialog').dialog({
            height: 550,
            width: 400,
            modal: true,
            buttons: {
                "OK": function () { $(this).dialog("close"); },
                "Cancel": function () { $(this).dialog("close"); }
            },
            autoOpen: false
        }

編集ボタンをクリックすると:

   $('#stufftoputindialog').dialog('open');

フォームの送信時:

$('#stufftoputindialog').appendTo('form#foo');

次に、編集ボタンをもう一度クリックすると、

$('#stufftoputindialog').dialog('open');

UIトレインレックを引き起こします(Firebugによると、#stufftoputindialogは</body>、最初のようにフォームの外に移動していません)

4

1 に答える 1

4

同様に移動する必要があるコンテナ内にあるため、代わりに次のようにします。

$('div#mydialog').parent().appendTo('form#foo');

ラッパーはタイトルバーのようなもののためのものです...あなたのソースを見て、.dialog()それが別の中にラップされていると呼ぶとき、あなたはそれ<div>に行き、その.parent()要素を移動する必要があります:)

于 2010-08-20T18:07:01.950 に答える