Данные пользовательской формы – в popup-окно.

mmv

Новичок
Данные пользовательской формы – в popup-окно.

Доброе время суток.
Столкнулся со следующей проблемой.
Необходимо передать содержимое пользовательской формы в сценарий, расположенный на другой странице. Это было бы проще простого, если бы не один момент: эту самую другой страницу нужно сделать pop-up окном.
Метод передачи в адресной строке - не подходит.
Для создания всплывающего окна пользуюсь Javascript.
Но если я указываю в строке action формы имя Javascript-функции со страницей в качестве параметра, то данные формы в сценарий уже не передаются.

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

Кром

Новичок
Но если я указываю в строке action формы имя Javascript-функции со страницей в качестве параметра, то данные формы в сценарий уже не передаются.
Вот здесь и нужно искать решение. При нажатии кнопки submit вызывай javascript функцию, которая создаст popup окно. А уже из popup окна обращайся к родительскому окну (через parent), в котором находится твоя форма.
 

mmv

Новичок
А уже из popup окна обращайся к родительскому окну (через parent), в котором находится твоя форма.
Можно немного подробнее про этот момент? Если честно, опыта у меня мало, и я все равно пока не очень понимаю, как это сделать.

-~{}~ 30.10.05 18:35:

Пожалуста, помогите разобраться!
 

t3[0one]

Новичок
javascript


newWin=window.open(....) ;

newWin - Указатель из родительского окна на новое окно(отрытое данным примером);

в открытом окне "opener" указатель на родительское окно .

-~{}~ 30.10.05 18:44:

очень полезная функция! мну помогает
Код:
// Отладчик JavaScript

function desplayobj(obj)
{
	var show;
	var htmlHEAD;
	var htmlEND;
	htmlHEAD = '<html><head></head><body><pre>';
	htmlEND = '</pre></body></html>';
	objName = obj + "";
	for (prop in obj)
		{
		 show = show + objName + "." + prop + " = " +obj[prop] + "<br>";	
		}
	eee = window.open('','eee');
	eee.document.open();
	eee.document.write(htmlHEAD);
	eee.document.write(show);
	eee.document.write(htmlEND);
	eee.document.close();
}
в таких случаях
 

mmv

Новичок
Прошу прощения за мою назойливость, но передо мной стоит задача, а как решить ее, я так и не понял.
Есть одна страница, и содержит она что-то вроде
Код:
<SCRIPT language=Javascript>
    <!--
    var pup
    function helpWin(url) {
        var pup = window.open(url, 'helpwin','status=no,resizable=no,menubar=no,
toolbar=no,scrollbars=yes,height=480,width=450,
left=10,top=10');
        if (window.focus) {
 pup.focus();
        }
        }
   //  -->
      </SCRIPT>
<?php
print "
      <center>
      <p>Опрос<hr>
      <form action=\"javascript:helpWin('popup.php')\" method=post>
      <table><tr><td>
      <font face=arial>Вопрос</font><br>   
      <input type=\"radio\" name=\"vote\" value=\"1\">Ответ один<br>
      <input type=\"radio\" name=\"vote\" value=\"2\">Ответ два<br>
      <input type=\"radio\" name=\"vote\" value=\"3\" checked>Ответ три<br><br>
      </td><td></table><br>
      <input type=submit value=Ответить>
      </form>
      </center>
     ";
?>
Вызывается второе окно, в котором есть сценарий-обработчик. Ну, например,
Код:
<?php
$data='vote.dat'; // Название файла базы банных
  $file = fopen($data, "r+t");
  $content=fread($file, filesize($data));
  $content=explode('-', $content);  
  if($vote==1) $content[0]=$content[0]+1;
  if($vote==2) $content[1]=$content[1]+1;
  if($vote==3) $content[2]=$content[2]+1;
  $content=implode("-", $content);
  rewind($file);
  fwrite($file, $content);
  fclose($file);
?>
Не могу понять, как заставить это работать(
 

t3[0one]

Новичок
1. <form action="'popup.php" method=post target="_blank">
Можешь так сделать с таким раскладом ...

но если надо через JS обязательно
2.
<form name="formas"……..
В новом окне проверка на
window.opener.document.formas[0].checked
window.opener.document.formas[1].checked
window.opener.document.formas[2].checked

значение true будет иметь выбранный элемент

Как ты будешь передавать значения в пхп думай сам дальше =)
 

Serguitar

Новичок->продвинутый
Тебе в принципе уже ответили, я просто, если никто не против, поптаюсь все это сложить в одно грамотное объяснение.
Итак, для передачи данных из формы pop-up окну, тебе нужно знать две вещи:
1. Имена полей и имя самой формы, которая заполнялась;
2. id <div> элементов, куда ты собираешься выводить то, что пользователь ввел.

При открытии pop-up окна ты просто ПЕРЕДАЕШЬ элементу страницы div значение соответствующего элемента формы.
Перебрав всю форму, ты получишь как раз то, что тебе необходимо.

Например:
<form name = form1 action=\"javascript:helpWin('popup.php')\">
<input type = text name = YourName>
<input type=submit name = add value = "Разместить">
</form>

А в Pop-up окне просто подымаешь это значение опять же javascript функцией.

document.getElementById('YourName').innerHTML = window.opener.Form1.elements.YourName.value;

а на странице Введенное Вами имя: <div id=YourName> </div>
 

mmv

Новичок
Serguitar, спасибо за понятное объяснение. Как быть с <input type = text> теперь понятно. Но у меня проблема именно с <input type=radio>. А с ними что-то пока ничего не получается. Предложенный t3[0one] вариант
Код:
window.opener.document.formas[0].checked
к сожалению, не работает. Пробовал
Код:
 if(window.opener.formas.elements.vote.checked.value==1) ....
(при элементах с именем vote как в исходном примере, что я приводил выше) тоже не работает.
:) Я понимаю, что уже всех достал, но хотелось бы разобраться до конца.
 

kruglov

Новичок
А мой совет типа совсем не в кассу?
Не внушает доверия, так как маленький?
 

Green

Новичок
не совсем понятный =)

<form target=blabla onsubmit="window.open('','blabla')">
__________^^^имя окна куда передавать форму
______________________________^^^^^открыть окно с нужным именем.
В результате сначала жаваскриптом открывается окно с определенным именем, а потом из формы постом в это окно с определенным именем отправляются данные
 

mmv

Новичок
kruglov, этот вариант мне не подходит, потому что PHP-форма с голосованием находится в составе главного html-окна как ssi-контейнер. Вот если бы подобным образом можно было вызвать конкретное окно! Т.е. тот самый ssi-контейнер!

-~{}~ 03.11.05 19:30:

Ну что, никто больше не подскажет, что ли?
 

chulim

Новичок
или я не понял, или в форме указывай target="имя твоего поп-апа"
 

maxXP

Новичок
PHP:
<a href="#"  onClick="window.open(\'index.php?X=1&Y=2\', \'newWin\', \'Toolbar=0, Location=0, Directories=0, Status=0, Menubar=0, Scrollbar=0, Resizable=0, Copyhistory=1, Width=500, Height=400\');">TEST</a>
 

mmv

Новичок
chulim
Нет, ты понял неправильно. В данная функция открывает окно само на себя. Во всяком случае я не понимаю, как использовать это решение в моем случае.

maxXP
Все это, конечно, хорошо, но проблема состоит совсем не в том, чтобы просто открыто всплывающее окно, а в том, чтобы сделать это из формы, причем передать туда параметры этой формы.

Еще раз сформулирую основную мысль, т.е. саму проблему.
Есть Html окно. Например, index.html. В составе этого окна как ssi контейнер присутствует форма для голосования. Допустим, форма для голосования называется vote.php. Тогда с составе index.html есть следующая строка: <!--#include virtual=" vote.php" -->. Теперь основная мысль. При голосовании пользователя хотелось бы направить на вплывающее окно, например, на то же самое vote.php, где есть код обработки (или на какое-либо другое окно, например, result.php). Но нужно передать данные формы на это окно. Проблема в том, что если создавать всплывающее окно яваскриптом, то данные не передаются.
Как обратиться с помощью window.opener на <input type=radio> старого окна, я не понимаю.
Но уверен, что решение есть!
 

Alive4U

Новичок
mmv
ну написали ж тебе про таргет...

примерно так:
PHP:
<form action="handler.php" target="PopUp" onsubmit="window.open('', 'PopUp', ...)">
 

Линка

Новичок
Alive4U

<form action="handler.php" target="PopUp" onsubmit="window.open('', 'PopUp', ...)">
Это не подойдет , т.к. открываються два окна: одно handler.php, а второе пустое созданое скриптом.

mmv
<form target=blabla action=bl.php method=post>
<input name=text type=radio value='first'/>
<input type=submit value='отправить'>
</form>

передавай что хочешь в свое окно.
P.S. минус - не можешь задать размер окна
 

mmv

Новичок
Но ведь можно, наверное, все-таки и размер задать? Или нельзя? Я что-то уже начинаю думать, что нельзя(
 
Сверху