Модальное окно порождения родительской страницы, кнопка на модальном ветре вызывает триггерный постбэк на родительском? - PullRequest
1 голос
/ 30 января 2010

У меня есть веб-форма asp.net. В форме есть несколько полей, которые пользователь заполнит. Существует гиперссылка, которая открывает модальное окно (я использую jquery & prettyphoto, но могу переключиться на http://www.ericmmartin.com/projects/simplemodal/, потому что его документация лучше)

Модальное окно содержит iFrame, где пользователь делает выбор и сохраняет запись.

На данный момент мне нужно закрыть это окно и запустить обратную передачу на родительской странице.

В настоящее время у меня есть гиперссылка на последнюю страницу, где target = parent и href = url родительской страницы. Затем у меня есть Javascript, который автоматически щелкает его. Я знаю, что это дешевый хак. Затем он отправляет пользователя обратно на родительскую страницу, однако страницы перезагружаются и все исходные данные теряются. Это проблема.

Какой лучший способ сделать это?

спасибо!

Ответы [ 2 ]

2 голосов
/ 30 января 2010

Если родительское окно и дочерний iframe находятся в одном домене, то это должно быть довольно просто.

Внутри iframe window.parent относится к внешнему объекту window, а на внешней странице - к самому себе.

https://developer.mozilla.org/en/DOM/window.parent

Таким образом, в iframe вы можете написать код следующего содержания:

// Check to make sure we're an iframe
if (window.parent !== window) {
  // Run an arbitrary function in the parent window
  var daddy = window.parent;
  daddy.doStuffThatSubmitsAFormInTheParentPage();
}
// Make sure you have that function defined in the parent page.

Вот пример доступа в jsbin. Вам понадобится консоль, чтобы увидеть любовь.

http://jsbin.com/ucisi/5

Соответствующий код, если хотите, довольно

http://jsbin.com/ucisi/5/edit

http://jsbin.com/ucisi/4/edit

0 голосов
/ 01 февраля 2010

С помощью Алекса я смог решить эту проблему.

На родительской странице у меня есть:

<script language="JavaScript">
<!--
    function clickPostBackButton() {
        document.getElementById("<%=PostBackButton.ClientID%>").click();
    }
-->
</script>

<asp:Button CssClass="hide" CausesValidation="false" runat="server" Text="Postback" ID="PostBackButton" />

Затем на iFrame, который загружается в модальное окно. У меня есть форма с кнопкой. Кнопка переносит пользователя на другую страницу. На этой странице у меня есть этот код:

<script language="javascript" type="text/javascript">
    // Check to make sure we're an iframe
if (window.parent !== window) {
  // Run an arbitrary function in the parent window
  var daddy = window.parent;
  daddy.clickPostBackButton();
}
// Make sure you have that function defined in the parent page.

</script>

В этот момент модальная вдова закрывается, и родительская страница получает обратную реакцию при срабатывании. Важно отметить, что у моей кнопки есть CausesValidation = "false", без этого у моей страницы были проблемы с проверкой. Спасибо за ваш совет Алекс Секстон

...