Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Form submit into opener window, отправка формы из нового в главное окно 
:(
    Опции темы
Merk
Дата 15.3.2006, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 28.6.2005

Репутация: нет
Всего: нет



Есть ли возможность засабмитить форму в попап окне, указав в качестве таргета окно, из которого был открыт этот попап?

PM MAIL   Вверх
Ciber SLasH
Дата 15.3.2006, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 24
Всего: 67



opener.document.forms[0].submit();
PM   Вверх
12345c
Дата 15.3.2006, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



Ciber SLasH, не то - это отправка формы из основного окна.

Как ни странно, во всех бр. сработал такой код:

Код
<script>qw=function(){w1=open('','','');
w1.document.write('<script>opener.name="t";<\/script>');
w1.document.write('<form action=JsPrimeryCode-68.htm target=t><input type=submit><\/form>');
w1.document.close();
}
</SCRIPT>
<input type=button onclick=qw() value=JsPrimeryCode-68.htm>


где JsPrimeryCode-68.htm - код другой страницы для проверки.
Т.е., приписываем окну name - и это будет его HTML-имя для target.


--------------------
Google Code Playground - онлайн-отладка своих примеров HTML+JS без регистрации, с сохранением по URL, без кириллицы. Go
PM WWW   Вверх
Ciber SLasH
Дата 15.3.2006, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 24
Всего: 67



Цитата(12345c @ 15.3.2006, 22:27 Найти цитируемый пост)
Ciber SLasH, не то - это отправка формы из основного окна.

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

Тогда так:
Код

<html>
<head>
<script type='text/javascript'>
onload = function () {
wnd = window.open("","MyWnd","");
wnd.document.write('<html><head></head><body><form action=\'javascript:alert("Меня засабмитили :)")\'></form></body></html>');
wnd.document.close();
}
</script>
</head>

<body>
<input type="button" onClick='wnd.document.forms[0].submit(); wnd.focus()' value="submit">
</body>
</html>

PM   Вверх
Merk
Дата 16.3.2006, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 28.6.2005

Репутация: нет
Всего: нет



Спасибо за пример, он отработал, но я так пробовал уже и в моём случае он всё время открывается в новом окне. Вот код, возможно я что-то упустил?

Функция сабмитит форму из основного окна в попап (выполняется как надо):
Код

function postPopUp() {
    window.name = "mainWindow";
    document.getElementById('searchEDMSDocumentsForm').target= 'searchEDMSDocuments';
    edmsFormWindow= open('','searchEDMSDocuments', "width=900, height=700,resizable=no,scrollbars=yes");
    edmsFormWindow.document.title = "Please wait...";
    searchEDMSDocumentsForm.submit();
    edmsFormWindow.focus();
}


Попап (Постится правильно, но всегда в новое окно):
Код

<form id="edmsForm" method="post" action="<%=url%>" target=mainWindow>
  <textarea name="xml" type="text" style="width:850px; height: 200px;" class="textArea"></textarea>
  <input value="Submit" type="submit"/>
</form>

PM MAIL   Вверх
Ciber SLasH
Дата 16.3.2006, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 24
Всего: 67



Покажи весь код, где элемент с именем searchEDMSDocumentsForm ?
Где код, который вставляется в popup-окно?
PM   Вверх
Merk
Дата 16.3.2006, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 28.6.2005

Репутация: нет
Всего: нет



searchEDMSDocumentsForm - обычная форма из нескольких инпутов и она работает правильно.

Код попапа я написал, там тоже простая форма с текст ареей и сабмит по заданному урлу. Урл правельный, ибо отрабатывает все как положено. Одна проблема, он открывает новое окно, а не сабмитися в опенера.
PM MAIL   Вверх
Ciber SLasH
Дата 16.3.2006, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 24
Всего: 67



Попробуй в BODY pupup-окна добавить onLoad="document.forms[0].target = self.name"
PM   Вверх
12345c
Дата 16.3.2006, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



Merk, Ciber SLasH, вы не видите это?

Цитата(12345c @ 15.3.2006, 22:27 Найти цитируемый пост)
w1.document.write('<script>opener.name="t";<\/script>');

Ключевое слово здесь - name
Добавлено @ 13:16
(Ciber SLasH, извиняюсь, но последний совет тоже неправильный.)
PM WWW   Вверх
Ciber SLasH
Дата 16.3.2006, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 24
Всего: 67



Цитата(12345c @ 16.3.2006, 13:14 Найти цитируемый пост)
Ciber SLasH, извиняюсь, но последний совет тоже неправильный

Почему, вот на примере работает:
Код

<html>
<head>
<script type='text/javascript'>
onload = function () {
wnd = window.open("","MyWnd","");
wnd.document.write('<html><head></head><body onLoad="document.forms[0].target = self.name"><form action=\'javascript:alert("Форма засабмитилась...")\'></form></body></html>');
wnd.document.close();
}
</script>
</head>
<body>
<input type="button" onClick='wnd.document.forms[0].submit(); wnd.focus()' value="submit">
</body>
</html>

PM   Вверх
12345c
Дата 16.3.2006, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



Работает. Так просили же сабмит не из главного окна в открытое, а наоборот - из открытого в открывшее.
PM WWW   Вверх
Ciber SLasH
Дата 16.3.2006, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 24
Всего: 67



Цитата(12345c @ 16.3.2006, 13:35 Найти цитируемый пост)
а наоборот - из открытого в открывшее.

В таком случае, я об этом написал в первом посте. Там как раз наоборот smile
PM   Вверх
Merk
Дата 16.3.2006, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 28.6.2005

Репутация: нет
Всего: нет



12345c, имя окну я задал при октрытии попапа
Код

window.name = "mainWindow";


даже проверил в попапе на onload body alert(opener.name); Вернулось именно то имя, которое я ему указал.
PM MAIL   Вверх
12345c
Дата 16.3.2006, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



Merk, Интересно. Получается, что HTML, загруженный из другого файла, считает, что имени такого не существует (а JS знает такое имя), а сгенерированный (HTML и JS) - знает имя. А попробуй сгенерировать документ - у меня же пример работает, не открывает новое окно.

Это сообщение отредактировал(а) 12345c - 16.3.2006, 17:22
PM WWW   Вверх
Merk
Дата 16.3.2006, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 28.6.2005

Репутация: нет
Всего: нет



12345c, я скопировал твой скрипт к себе в систему. Попап открывается нормально, но по нажатию кнопки сабмит (в попапе) открылось новое окно, как и в случае моего кода.
У меня уже закончились идеи, с чем это может быть связано.

Это сообщение отредактировал(а) Merk - 16.3.2006, 17:48
PM MAIL   Вверх
Ciber SLasH
Дата 16.3.2006, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 24
Всего: 67



Интересно было бы взглянуть на примерный шаблон того, что ты пытаешься сделать. А то я что-то вообще запутался что тебе нужно и как...
PM   Вверх
Merk
Дата 16.3.2006, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 28.6.2005

Репутация: нет
Всего: нет



Ciber SLasH, всё давольно просто, есть система учёта контрактов, на каждом конкретном контракте есть список документов. Ты нажимаешь кнопку поиска новых документов и система открывает попап с некоторой внешней системой и передаёт в него параметры, необходимые для того, чтобы идентифицировать этот контракт при возврате. Там ты находишь нужный документ, нажимаешь добавить и он постится обратно в окно с основной системой.

Всё работает, кроме того, чтобы запостить именно в то окно, из которого был открыт попап, в место этого, из попапа открывается новое окно.

Это сообщение отредактировал(а) Merk - 16.3.2006, 18:43
PM MAIL   Вверх
Ciber SLasH
Дата 16.3.2006, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 24
Всего: 67



Цитата(Merk @ 16.3.2006, 18:42 Найти цитируемый пост)
открывает попап с некоторой внешней системой

Контент в этот popup как засовывается? Открывается ссылка в popup-е или document.write-ом пишется?
PM   Вверх
12345c
Дата 16.3.2006, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



Merk, какая версия, не IE SP2 ? У меня работало во всех, а тут явно исключение. Проверьте в других бр.
PM WWW   Вверх
Ciber SLasH
Дата 17.3.2006, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 24
Всего: 67



Вот, в качестве подтверждения, что opener.document.forms[0].submit(); (о чём я писал в первом посте) работает — накатал такой примерчик:
Код

<html>
<head>
<script type='text/javascript'>
onload = function () {
    if (location.search.indexOf("wnd_open") == -1) {    // если popup-окна ещё нет
        var wnd = window.open("","MyWnd","");
        wnd.document.write(
            '<html><head>\n'+
            '<script type=\'text/javascript\'>\n'+
            'function mainWndSubmit() {\n'+
            'var fm = opener.document.forms[0];\n'+
            '    fm.elements["wnd_open"].value = "1";\n'+
            '    fm.submit();\n'+
            '}\n'+
            '<\/script>\n'+
            '</head><body>\n'+
            '<input type="button" onClick=\'mainWndSubmit()\' value="Отослать форму в родительском окне">\n'+
            '</body></html>'
        );
        wnd.document.close();
    } else {
        var logs = document.getElementById("log");
        var count = location.search.match(/count=(\d+)/)[1];    // количество отсылок формы
        logs.innerHTML = "Количество отсылок формы: " + count;
        document.forms[0].elements["count"].value = ++count;    // увеличиваем счётчик
        document.forms[0].elements[3].focus();
    }
}
</script>
</head>

<body>
<form method="GET">
Проверочный флаг: <input type="checkbox" name="flag"><br><br>
<input type="hidden" name="wnd_open" value="0">
<input type="hidden" name="count" value="1">
<input type="submit" value="submit">
</form>
<div id='log'></div>
</body>
</html>

PM   Вверх
12345c
Дата 17.3.2006, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



Ciber SLasH, да, у меня тоже работает, как и мой аналогичный пример из (выше).

Merk, а у тебя как будет?
PM WWW   Вверх
Sardar
Дата 8.4.2006, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Не правильная логика, лучше построить форму содержащую одни скрытые элементы в родительском окне сразу, а из дочернего поставить значения и отправить. Для ИЕ конечно сработает и такой вариант (принцип идеентичен решению от 12345c):

Код
<!-- в родительском -->
<script type="text/javascript">
<!--
self.name="parent_window";
//-->
</script>
<a href="./form.htm" target="_blank">Test</a>


Код
<!-- в дочернем -->
<script type="text/javascript">
<!--
  //что бы увидеть как параметр передался
  var res =/test=([^ ]+)/.exec(location.search);
  if(res) document.write("Param: <b>"+res[1]+"</b>");
//-->
</script>
<!-- собсно указали имя заданное в родительском -->
<form action="./form.htm" method="GET" id="form" target="parent_window" onsubmit="window.setTimeout('self.close()', 500); return true;">
<input type="text" name="test">
<input type="submit" value="Send">
</form>

Но мозилла такой финт ушами проигнорирует и форма будет загружена в дочернем окне.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0691 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.