0

ユーザーがWebページで完了するフォームがあります.ユーザーがフォームを送信すると、ブートストラップモーダルダイアログが表示されます.このダイアログにはiframeがあり、親ウィンドウから関数を呼び出してフォームをロードします.それで:

//parent window
var formToSubmit;
function getForm(){
   return formToSubmit;
}

$("#submitButton").click(function(){
   //alterations to the elements in $("mainForm")

   formToSubmit = $("mainForm");
   $("#modalDialog").modal();
   //...
});

//modal iframe
var parentForm = parent.window.getForm();
$("#mainDiv").append(parentForm[0].outerHTML);
$("form").submit(function(){
   parent.window.closeModalWindow(); //not sure whether this will close AFTER the form is completely submitted yet

});

$("form").submit();

私の問題は、これらのフォームを microsoft sql サーバー レポート サービスに送信していて、すべての入力要素をパラメーターとして受け取ることです。私はこれを制御できません。

したがって、ユーザーがメインフォームで送信をクリックすると、パラメーターとして設定してはならないすべての要素を無効にします。親ウィンドウからフォームを取得してモーダル iframe に追加するとすぐに、これらの変更がすべて失われたように見えますが、これを保持する方法はありますか?

4

1 に答える 1

3

あなたの問題は、フォームでの outerHTML の呼び出しに関係している可能性があります。まず、outerHTML の実装はブラウザーによって異なるため、できれば使用しないようにします。第 2 に、outerHTML には必ずしもライブ DOM 要素が含まれているわけではなく、文字列としてのダンプにすぎません。

したがって、フォームを IFRAME に渡す前にディープ クローンを作成することをお勧めします。

jQuery を使用する場合 ( docs を参照):

$("#mainDiv").append(parentForm.clone(true));

またはプレーンな JavaScript ( docs を参照):

document.getElementByid('mainDiv').appendChild(parentForm[0].cloneNode(true));

これを確認するためにいくつかのテストを実行しましたが、フォームを複製している限り、期待どおりの結果が得られます。


補足として、モーダルでフォームを複製するのはなぜですか? ユーザー向けの「レビューしてください」タイプのものとして再作成していますか?奇妙なプロセスのようです。おそらく、あなたが求めていることを行うためのより良い方法があるので、私は尋ねるだけです. とにかく、私が与えた答えは役立つはずです。

于 2013-07-17T14:32:14.567 に答える