1


0

JQueryダイアログボックスを閉じた後のポストバックによりIEでjsエラーが発生する

JQueryダイアログボックスを作成していますが、親フォームへのポストバックを発生させるクローズ機能が必要です(ポップアップフォームで変更されたデータがすぐに親画面に表示されるように)。 コードを作成し、ダイアログボックスを配置しました。 ただし、問題があります。 IEでは、ポップアップを閉じてポストバックが発生すると、「オブジェクトはこのプロパティまたはメソッドをサポートしていません」というダイアログエラーを受け取り、ダイアログボックスを作成するコードブロックを参照します。

背景:ポップアップのあるページは、変更可能なデータベース情報を表示する多くの領域を持つaspxページです。 このページはマスターページを使用します。 ポップアップには、クリックされたボタンに応じてソースを変更するiframeが含まれています。 私たちが持っている多くのポップアップフォームに同じダイアログボックスとポップアップdivを使用したいと思っていました。

これがJavaScriptです。 $(document).readyセクションにあります:

//Source of IE error
$("#popup").dialog({
    bgiframe: true,
    resizable: false,
    height: 217,
    modal: true,
    autoOpen: false,
    close: function()
    {
        $('#aspnetForm').submit(); //Submit the parent form to cause postback
    }
});

$("#BHSubmitBtn").click(function()
{
    var splitChar = $("#ctl00_Main_splitCharacter");
    var queueId = $("#ctl00_Main_queueId");
    var siteName = $("#ctl00_Main_siteName");
    var queryString = "Add" + splitChar + siteName + splitChar + queueId;

    $("#popupFrame").attr('src', 'BusinessHoursSubForm.aspx?var1=' + queryString);
    $("#popup").dialog('open');
});

ここに私がポップアップしているdivがあります:


フォームを開くボタンは次のとおりです。


私はこれを処理するためにさまざまな方法を試しましたが、ほとんどが次で始まる行のui.dialogのjavascriptエラー(上記のもの)で終わります:

`$ .widget( 'ui.dialog'、…​)`または私のjavascript。

なぜこれが起こっているのか誰でも考えることができますか? (ポストバックで)動作するようになりましたが、作業中のセクションを除くすべてのページを削除する必要がありましたが、それが原因であるとわかるものは何もありません。

4 Answer


1


submit()を作成してポストバックを行うためのフォームを送信する代わりに、__ doPostback( 'XYZ、' ');を使用できます。ポストバックを発生させるため。


0


このように親ドキュメントにアクセスする必要があると思います。

$('#aspnetForm', window.parent.document).submit();


0


問題は、ASP.NETで生成されたページがいくつかのグローバルjavascript値に依存していることです。 これらの値は、注入するダイアログによって上書きされる可能性があります。 この問題に対する私の解決策は、ダイアログをロードする前に現在の状態を保存するオブジェクトを用意し、完了したら復元することでした。

どの値を保存する必要があるかを判断するには、ダイアログとしてロードするページを慎重に確認する必要があります。 すべてのスクリプトタグを確認します。 保存/復元する価値のある値は、「__ doPostBack」、「theForm」、「WebForm_OnSubmit」、「Page_Validators」、「ValidatorOnSubmit」、「Page_ValidationActive」、「ValidatorOnChange」です。

このリストは、ダイアログ内でより多くのASP.NET機能を使用するにつれて大きくなります。


0


実際の問題は、フォームがポストバックされる方法とは関係ありませんでした。 問題(うめき声)は、現在非推奨のSmartNavページ属性を使用していることです(私のタスクの一部はこれを取り除くことでした)。 すべてのページから削除すると、機能しました。