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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача переменных между формами, Открытых в разных окнах 
:(
    Опции темы
Mak
Дата 20.4.2005, 23:24 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Есть file1.php с формой form1, в которой мы заполняем соответствующие поля информацией. При заполнении формы требуется вызывать большой список из которого chekbox'ом мы должны выбрать нужные записи. Задача заключаетя в том, чтобы список открывался в отдельном временном окне браузера (т.е. spisok.php в котором form2 с checkbox'ами ) и после того, как все галочки в нужном месте будут проставлены, по нажатию кнопки типа 'Отправить', переменные вместе с их значениями отправились в form1,а временное окно закрылось.

Кто знает куда и как копать, пишите сюда плиз.
  Вверх
batigoal
Дата 21.4.2005, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


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

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



Смотри статью Aliance по окнам:
http://forum.vingrad.ru/index.php?showtopic=44559


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Mak
Дата 21.4.2005, 15:56 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Lamer George, ок, спасибо щас гляну.

  Вверх
Aliance
Дата 21.4.2005, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

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



2 Mak
А еще регистрируйся на форуме smile
PM MAIL WWW ICQ Skype   Вверх
Мак
Дата 22.4.2005, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Lamer George, почитал статью Aliance, но так и не смог понять до конца всей сути, что лучше использовать и как. Если взять в пример модальный диалог, то не понятно, как всетаки можно передать переменные из модального окна в родительское, откуда первоначально оно было вызвано и возможно ли это вообще? Нашел инфу про св-во dialogArguments, но тоже не понятно как его использовать.

Хочу уточнить, что в модальном окне будет список из chekbox, поэтому кол-во передаваемых переменных будет зависить от кол-ва выбора юзера, а дальше в родительском окне будут обрабатываться php-скриптом.

Это сообщение отредактировал(а) Мак - 22.4.2005, 19:33
PM MAIL   Вверх
Aliance
Дата 22.4.2005, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

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



Не стоит их юзать. Они поддерживаются только в IE.
По остальному: что конкретно непонятно? Запости что получалось...
PM MAIL WWW ICQ Skype   Вверх
Мак
Дата 22.4.2005, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Aliance, при заполнении формы form1, вызываю дополнительное окно на котором висит форма form2 с большим списком из chekbox'ов, делаю это так
Код

<a href="javascript:" onclick="win3 = window.open('spisok.php', 'popup', 'width=450,height=280,scrollbars=yes,status=yes')"> Открыть окно</a>

Далее, после выбора chekbox'ов, хотелось бы сделать submit переменных обратно в окно откудо оно было вызвано (т.е. в form1),а временное окно должно быть закрыто.

Вот такая вот задачка. Вообще, это реально?

Переменные в form1 обрабатываться будут PHP-скриптом.

Это сообщение отредактировал(а) Aliance - 22.4.2005, 20:11
PM MAIL   Вверх
Aliance
Дата 22.4.2005, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

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



Кинь все коды. Я ж не знаю код с твоими чекбоксами.
PM MAIL WWW ICQ Skype   Вверх
Sardar
Дата 22.4.2005, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


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

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



Из дочернего окна отправь форму через родительское(укажи target="_top" у формы). Закрыть окошко не сможешь smile

Второй способ: забей window.opener.forms.form1 необходимой инфой и отправь. Отправку ставишь на таймер в 100мс, а сам(дочернее окошко) в это время закрываешся(self.close())


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Мак
Дата 22.4.2005, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



from.php - скрипт с формой для заполнения информацией

Код

<html>
<head><title></title></head>
<body>
<form action="form.php" method="post" name="form">

...

<a href="spisok.php" onclick="window.open(this.href,'_blank','width=470,height=285,location=no,toolbar=no,menubar=no,status=no,scrollbars=0,resizable=0'); return false;">Выбрать записи</a>

...

<input type="submit" value="Сохранить" name="save">
</form>
</body>
</html>


по нажатию на ссылку, окно браузера c form.php остается открытым, а всплывает еще одно окно где php-скриптом генерится html код списка

spisok.php
Код

<html>
<head><title></title></head>
<body>
<form action="form.php" method="post">

<input type="checkbox" name="msg1" value="1">Запись 1<br>
<input type="checkbox" name="msg2" value="2">Запись 1<br>
<input type="checkbox" name="msg3" value="3">Запись 1<br>
...
<input type="checkbox" name="msgN" value="N">Запись N<br>
<input type="submit" name="add" value="Добавить">

</form>    
</body>
</html>


после того как юзер выбрал галочками нужные записи, он нажимает кнопку "Добавить", всплывающие окошко закрывается, а переменные выбранных чекбоксов отправляются в form.php, и там уже обрабатываются должным образом.

PM MAIL   Вверх
Aliance
Дата 23.4.2005, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

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



Переменные я бы хранил в input:hudden. А закрыть окно spisok.php можно
Код

self.close();


Что еще не понятно? Спрашивай...
PM MAIL WWW ICQ Skype   Вверх
Мак
Дата 23.4.2005, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Aliance, ну это все понятно, а после того как я нажал кнопку в окне spisok.php, у меня должно открываться не новое окно, а переменные должны передаться в уже открытое form.php.
PM MAIL   Вверх
Aliance
Дата 23.4.2005, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

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



Не достаточно хорошо читал значит.
Код

opener.document.forms[0].elements[0].value = this.value

Вещаешь на onchange этого, или все по закрытию, тогда правую часть перепишешь в соот. с необходимым...
PM MAIL WWW ICQ Skype   Вверх
Sardar
Дата 23.4.2005, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


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

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



Второй способ на примере за 5 минут:

Target.htm
Код
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head><title>Test</title>
<script type="text/javascript">
<!--

function openChildWindow(src) {
 window.open(src,"_blank","width=470,height=285,location=no,toolbar=no,menubar=no,status=no,scrollbars=0,resizable=0");
}

/**
* Получаем выбранные чекбоксы от дочернего окна
*/
//format: [{name, value},{name, value}...];
function takeFormData(data, childwin) {
  var f=document.getElementById("tgt");
  for(var i=0; i<data.length; i++) {
    var e=document.createElement("INPUT"); //забиваем форму
    e.type="hidden";
    e.value=data[i].value;
    e.name=data[i].name;
    f.appendChild(e);
  }
  childwin.close(); //закрыли дочернее
  f.submit(); //отправили
}
//-->
</script>
</head>
<body>
<form action="about:blank" method="POST" id="tgt">
<a href="source.htm" target="_blank" onclick="openChildWindow(this.href); return false;">Выбрать записи</a>
<input type="submit" value="Сохранить" name="save">
</form>

</body>
</html>


Source.htm
Код
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head><title>Forms</title>
<script type="text/javascript">
<!--

/**
* Выбираем все чекбоксы, набиваем массив элементами имя->значение
*/
function prepareForm() {
  if(!window.opener||!window.opener.takeFormData) throw "Illigal state exception: this window must be opened from another window!";
  var f=document.getElementById("source");
  var p=[];
  for(var i=0; i<f.elements.length; i++)
    if(f.elements[i].checked)
         p[p.length]={name: f.elements[i].name, value: f.elements[i].value};

  window.opener.takeFormData(p, self); //отдали инфу родительскому окну
}
//-->
</script>
</head>
<body>
<form action="#" onsubmit="prepareForm(); return false;" id="source">
<input type="checkbox" name="msg1" value="1">Запись 1<br>
<input type="checkbox" name="msg2" value="2">Запись 1<br>
<input type="checkbox" name="msg3" value="3">Запись 1<br>
<input type="checkbox" name="msgN" value="N">Запись N<br>
<input type="submit" name="add" value="Добавить">
</form>    
</body>
</html>



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Мак
Дата 24.4.2005, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Sardar,а как потом использовать этот массив с инфой в родительском окне? мне нужно обрабатывать переменные php-скриптом...



Добавлено @ 11:40

Aliance, будь добр ткни меня прямо, куда надо повесить этот код
Код
opener.document.forms[0].elements[0].value = this.value

чтобы отослать переменные родительскому окну...

никак я непойму этот javascript .... smile

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


 




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


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

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