Обратная передача после закрытия диалогового окна JQuery вызывает ошибку js в IE - PullRequest
1 голос
/ 18 ноября 2009

Я создаю диалоговые окна JQuery, и мне нужна функция закрытия, чтобы вызвать обратную передачу в родительскую форму (чтобы данные, измененные во всплывающей форме, немедленно отображались на родительском экране). У меня есть код написан и диалоговое окно на месте. Тем не менее, есть проблема. В IE, когда я закрываю всплывающее окно и происходит обратная передача, я получаю эту ошибку JavaScript, которая гласит: «Объект не поддерживает это свойство или метод», и это относится к блоку кода, который создает диалоговое окно.

Просто немного фона: страница с всплывающим окном является страницей aspx со многими областями, которые отображают информацию базы данных, которую можно изменить. Эта страница использует главные страницы. Всплывающее окно содержит фрейм, в котором я меняю источник в зависимости от того, какая кнопка нажата. Я надеялся использовать одно и то же диалоговое окно и всплывающее окно 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, который я выскакиваю:

<div id="popup" title="Business Hours" >
<iframe id="popupFrame" src=""></iframe>
</div>

Вот кнопка, которая открывает форму:

<input class="clsSubmitBtn" id="BHSubmitBtn" type="button" value="Add" />

Я пробовал много разных способов справиться с этим, большинство из них заканчивалось ошибкой javascript (выше) в файле ui.dialog в строке, начинающейся с:

$.widget('ui.dialog', ...) или мой javascript.

Кто-нибудь может подумать, почему это происходит? Я заставил его работать (с обратной передачей), но мне пришлось убрать страницу всего, кроме раздела, над которым я работаю, но я не вижу ничего, что могло бы вызвать это.

Ответы [ 4 ]

1 голос
/ 22 декабря 2009

Вместо того, чтобы писать submit () для отправки формы для выполнения обратной передачи, вы можете использовать __doPostback ('XYZ,' '); за возникновение обратной передачи.

0 голосов
/ 05 января 2010

Фактическая проблема не имела никакого отношения к тому, как форма отправлялась обратно. Проблема (стон) заключается в том, что мы использовали устаревший атрибут страницы SmartNav (частью моей задачи было избавиться от этого) и по какой-то причине он вызывал ошибку (возможно, из-за того, что smartNav делает в фоновом режиме). Как только я удалил его со всех страниц, он работал.

0 голосов
/ 21 декабря 2009

Проблема в том, что страница, сгенерированная ASP.NET, зависит от некоторых глобальных значений JavaScript. Эти значения могут быть перезаписаны введенным вами диалогом. Мое решение этой проблемы состояло в том, чтобы иметь объект, который сохраняет текущее состояние перед загрузкой диалогов, а затем восстанавливает его после завершения.

Чтобы определить, какие значения необходимо сохранить, необходимо внимательно просмотреть страницы, которые вы загружаете в виде диалогов. Просмотрите все теги скрипта. Некоторые значения, которые я нашел заслуживающими сохранения / восстановления: «__doPostBack», «theForm», «WebForm_OnSubmit», «Page_Validators», «ValidatorOnSubmit», «Page_ValidationActive», «ValidatorOnChange»

Этот список будет расширяться по мере использования в вашем диалоговом окне дополнительных функций ASP.NET.

0 голосов
/ 18 ноября 2009

Я думаю, вам нужно получить доступ к родительскому документу следующим образом.

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