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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача названия из одного окна в другое 
V
    Опции темы
Igor_CH
Дата 4.7.2006, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Подскажите как сделать.
Есть поле input рядом кнопка добавить. 
Щелкаем добавить открывается новое окно, в этом окне выбираем одно из названий, щелкаем по название – окно закрывается, название в поле input 
 
PM MAIL   Вверх
Burrr
Дата 4.7.2006, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Чтобы передать информацию из дочернего окна в родительское нужно использовать window.opener - ссылка на родительское окно.
Код
window.opener.document.forms["form_1"].input_1.value = "Название";

Этот пример кода в инпуте input_1 формы form_1 родительского окна поставит значение "Название".
C такими задачами, как открытие попапа и обработка клика по названию думаю справишься и сам ;) 


--------------------
PM MAIL ICQ   Вверх
Igor_CH
Дата 4.7.2006, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



наверно что я не так делаю, не работает, вот код:

файл index.php:
Код

<Form Name="NewsAdd" Action="index.php?action=NewsAdd" Method="POST">
<table><tr><td>
<input type="text" name="input_1" value="">    
<input type="button" name="select" value=" file " onclick="window.open('file.php', 'file', 'HEIGHT=400,WIDTH=670,resizable=no,scrollbars=yes');return false;"/>
</td></tr></table></form>


файл file.php:
Код

<a href=# onclick=window.opener.document.forms["NewsAdd"].input_1.value = "Название";>Название </a>


 
PM MAIL   Вверх
Burrr
Дата 4.7.2006, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вот так работает:
Код
<a href=# onclick="window.opener.document.forms['NewsAdd'].input_1.value = 'Название';">Название</a>

smile 


--------------------
PM MAIL ICQ   Вверх
Igor_CH
Дата 5.7.2006, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо!!! А как сделать чтоб при щелчке оно еще бы и закрывалось?

И чтоб не создавать второй темы, она подобная, задам здесь.
Возможно ли реализовать вот такое:

На странице и есть кнопка добавить, щелкаем открывается окно с N количеством input, т.е.:
Код

<input class="selectFile_2" style="width: 200px;" name="file_[1] " >
<input class="selectFile_2" style="width: 200px;" name="file_[2] " >
<input class="selectFile_2" style="width: 200px;" name="file_[3] " >
……………………………………………………………
<input class="selectFile_2" style="width: 200px;" name="file_[N] " >


И именно с таким именем file_[N] (в квадратных скобках).

Заполняем эти поля методом выше. smile 
Нажимаем ОК, страница закрывается. И на главной странице появляются эти input или просто список:  
file_[1] = «То что мы ввели»
file_[2] = «То что мы ввели»
…….
 
PM MAIL   Вверх
Burrr
Дата 5.7.2006, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



1. Чтобы сразу закрывалось:
Код

<a href=# onclick="window.opener.document.forms['NewsAdd'].input_1.value = 'Название'; window.close();">Название</a>


2. То, что ты хочешь во втором пункте можно реализовать опять же с помощью window.opener. Так как с его помщью можно обращаться также и к ф-иям в родительском окне. 
Step 1: пользователь заполняеьт в попапе твои инпуты и жмет Submit
Step 2: с помощью какой-нить ф-ии в попапе ты собираешь значения всех инпутов в строковую переменную (или массив) и передаешь ф-ии родительского окна, с помощью window.opener. 
Код
window.opener.nameFunctionInParentWindow(yourTextVarOrArray);

Step 4: закрываем окно с пом. window.close()
Step 5: Ф-ия nameFunctionInParentWindow рисует в родитеском окне то, что тебе нужно. 


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


I ♥ <script>
****


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

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



Цитата(Igor_CH @  5.7.2006,  10:31 Найти цитируемый пост)
А как сделать чтоб при щелчке оно еще бы и закрывалось?

window.close()


Цитата(Igor_CH @  5.7.2006,  10:31 Найти цитируемый пост)
На странице и есть кнопка добавить, щелкаем открывается окно с N количеством input

Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE>© AlianceHTMLEditor [ http://editor.sut.net.ru/editor.html ]</TITLE>
<script type="text/javascript" language="JavaScript">
<!--//--><![CDATA[//><!--

function send(num, win, from) {
   for (i = 0; i < num; i++) {
      from.document.getElementById('aliance').innerHTML += win.document.forms[0].elements[i].name + " - &#171" + win.document.forms[0].elements[i].value + "»\n<br />";
   }
   win.close();
}

// количество инпутов
var n = 4;

function add() {
   var newWin = window.open('', 'newWin', 'height=300px,width=400px,resizable=no,scrollbars=yes');
   newWin.document.open("text/html");
   var html = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<HTML>\n<HEAD>\n<TITLE>© AlianceHTMLEditor [ http://editor.sut.net.ru/editor.html ]</TITLE>\n</HEAD>\n<BODY>\n<form action=\"\">\n";
   for (i = 1; i <= n; i++) {
      html += "<br /><input class=\"selectFile_2\" style=\"width: 200px;\" name=\"file_[" + i + "]\" />\n";
   }
   html += "<br /><br /><input type=\"button\" value=\"Отправить\" onclick=\"opener.send(" + n + ", self, opener)\" /></form>\n</BODY>\n</HTML>";
   newWin.document.write(html);
   newWin.document.close();
}

//--><!]]>
</SCRIPT>
</HEAD>

<BODY>

<INPUT type="button" value="Добавить" onclick="add()" />

<div id="aliance"></div>

</BODY>
</HTML>
 
PM MAIL WWW ICQ Skype   Вверх
Igor_CH
Дата 5.7.2006, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо.
Но не совсем правильно работает, не воспринимает если я ввожу числа. И если я второй раз щелкаю добавить, то добавляется опять по новому, т.е.:
file_[1] - «файл 1» 
file_[2] - «файл 2» 
file_[3] - «файл 3» 
file_[4] - «fgg» 
file_[1] - «dsgsdgsdg» 
file_[2] - «выфа» 
file_[3] - «вввв» 
file_[4] -?»  (вот так выглядят если ввожу просто числа)

можно ли чтоб список заново обновлялся или при повторном щелчке добавить оставались те инпуты которые я уже вбивал, а далее я щелкаю кнопку добавить поле и добавляю (добавление количества инпутов я уже сделал на PHP – наверно зря, надо было тоже на JavaScripts, на я в нем ни бум бум smile( )
 
Burrr 
Step 2 оюъясни пожалуйста поподробнее 

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


I ♥ <script>
****


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

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



Перепиши функцию send() так:
Код

function send(num, win, from) {
   from.document.getElementById('aliance').innerHTML = "";
   for (i = 0; i < num; i++) {
      from.document.getElementById('aliance').innerHTML += win.document.forms[0].elements[i].name + " - &#171" + win.document.forms[0].elements[i].value + "»\n<br />";
   }
   win.close();
}
 
PM MAIL WWW ICQ Skype   Вверх
Igor_CH
Дата 5.7.2006, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Aliance  большое спасибо!

Последний вопрос, дальше мне эти переменные передавать по методу POST, сейчас идет просто:
file_[1] - «файл 1» 
file_[2] - «файл 2» 
file_[3] - «файл 3»
и далее эти переменные переходить не хотят smile

Т.е. наверно мне надо формировать вывод подругому:
<input name="file_[3]" value="файл 3"> так возможно реализовать?
 
PM MAIL   Вверх
Aliance
Дата 5.7.2006, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


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

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



Канечно, перепиши 4 строчку моего последнего кода так:
Код

      from.document.getElementById('aliance').innerHTML += "<input name=\"" + win.document.forms[0].elements[i].name + "\" value=\"" + win.document.forms[0].elements[i].value + "\" />\n<br />";
  

Это сообщение отредактировал(а) Aliance - 5.7.2006, 15:48
PM MAIL WWW ICQ Skype   Вверх
Igor_CH
Дата 5.7.2006, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



БОЛЬШОЕ СПАСИБО!!!!!!! 
PM MAIL   Вверх
Igor_CH
Дата 6.7.2006, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Еще раз возвращаюсь к этому вопросу. Замучал наверно.
Первый файл: index.php (дальше он заносит все в базу)


Код

……………………………………………………………………………………………………
<script type="text/javascript" language="JavaScript">
<!--//--><![CDATA[//><!--

function send(num, win, from) {
   from.document.getElementById('aliance').innerHTML = "";
   for (i = 0; i < num; i++) {
     from.document.getElementById('aliance').innerHTML += "<input name=\"" + win.document.forms[0].elements[i].name + "\" value=\"" + win.document.forms[0].elements[i].value + "\" />\n<br />";
   }
   win.close();
}
//--><!]]>
</SCRIPT>
<div id="aliance"></div>
<input type="button" name="select" value=" file " onclick="window.open('ind.php', 'file', 'HEIGHT=400,WIDTH=670,resizable=no,scrollbars=yes');return false;"/>

……………………………………………………………………………………………………
// записываем в БД,  S число строрк с инпутами , в строке по два инпута с именами file_[], text_[]

for ($i = 1; $i <=$s; $i++) {
if ($_POST["file_"][$i] !== "") {
$sql_insert = "INSERT INTO file (id, file_name, file_text, id_news) VALUES  (".sql_quote($_POST["max_"][$i]).", ".sql_quote($_POST["file_"][$i]).",".sql_quote(($_POST["text_"][$i])).", ".sql_quote($id_news).") ;";
$result_1 = mysql_query($sql_insert,$con) or die (mysql_error()."<br>".$sql_insert);
}
}

……………………………………………………………………………………………………



Второй файл  ind.php заносит названия файлов и их описание:
Код

<Form Name="NewsAdd" Action="<?=$_SERVER["PHP_SELF"]?>" Method="POST">
<tr><td width=100% colspan=3>
<?php
    
    if (!isset($_POST["file_"])) { $_POST["file_"] = ""; }
    $a = $_POST["file_"];
    
    if (!isset($_POST["text_"])) { $_POST["text_"] = ""; }
    $at = $_POST["text_"];
    
    if (!isset($_POST["aS"]))
    { $s = 2; 
    } else { 
    $s = $_POST["ss"]; 
    $s = 1 + $s; } 

    ?>
<table border=0 width=100%>
<tr><td><br></td><td><br></td>
<tr><td align=left><b>Файл</b></td><td><b>Название отображения файла в новостях</b></td>

<?php
    for ($i = 1; $i <=$s; $i++) {
?>
<tr>
    <td valign=middle>
<?=$i;?> 
<input class="selectFile_2" style="width: 200px;" name=file_[<?=$i;?>]
<?
    if (!isset($a[$i])) { $a =""; } else { echo 'value="'.$a[$i].'"'; }
?>
>
    </td>
    <td valign=middle align=left>
<input style="width: 300px;" name=text_[<?=$i;?>]
<?
    if (!isset($at[$i])) { $at =""; } else { echo 'value="'.$at[$i].'"'; }
?>
>
<td align=left valign=top>&nbsp;&nbsp;&nbsp;&nbsp;<a class=karta href="#" onclick="window.open('files/index.php', 'otzov', 'HEIGHT=400,WIDTH=670,resizable=no,scrollbars=yes');return false;"><b>файл</b></a></td></tr>
<?php    
    }
?>
</td></tr>
<tr>
    <td colspan=2>
    <input type="hidden" name="ss" value="<?=$s;?>">
    <input type="submit" style="margin: 5px;" name="aS" value="Добавить +">
    </td>
</tr>
<tr>
    <td colspan=2><?php print $s*2; ?>
<input type="button" value="Отправить" onclick="opener.send(<?=$s*2;?>, self, opener)" />
    </td>
</tr><table>

</td></tr>
</Form>



Появилась проблемы:
1. как сделать чтоб в одну строку записывались два инпута (инпут с именем и инпут с названием)
2. как передать переменную S (количество строк с инпутами).
 
PM MAIL   Вверх
Aliance
Дата 6.7.2006, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


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

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



Не ясно какие два инпута. Объясни как мне их найти, еще так же неплохо было бы видеть генерируемую разметку.

Цитата(Igor_CH @  6.7.2006,  18:13 Найти цитируемый пост)
2. как передать переменную S (количество строк с инпутами).

это новая переменная? или она равна моей переменной n?

Кстати, позволю себе дать тебе совет по php. Вот это:
Код

    if (!isset($_POST["file_"])) { $_POST["file_"] = ""; }
    $a = $_POST["file_"];

Мне кажется будет короче выглядеть так:
Код

    $a =  (isset($_POST['file_'])) ? $_POST['file_'] : '';
 
PM MAIL WWW ICQ Skype   Вверх
Igor_CH
Дата 7.7.2006, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



разметка файла ind.php выглядит так:
Код

<tr><td><input name=file_[]> <input name=text_[]></td></tr>

<tr><td><input name=file_[]> <input name=text_[]></td></tr>

<tr><td><input name=file_[]> <input name=text_[]></td></tr>


т.е. я заполняю Название и Описание.
У тебя n это общее количество инпутов, а мне надо количество получаемых строк:
Код

<tr><td><input name=file_[]> <input name=text_[]></td></tr>


чтоб потом по этому количеству S запустить цикл:
Код

for ($i = 1; $i <=$s; $i++) {
if ($_POST["file_"][$i] !== "") {
$sql_insert = "INSERT INTO file (id, file_name, file_text, id_news) VALUES  (".sql_quote($_POST["max_"][$i]).", ".sql_quote($_POST["file_"][$i]).",".sql_quote(($_POST["text_"][$i])).", ".sql_quote($id_news).") ;";
$result_1 = mysql_query($sql_insert,$con) or die (mysql_error()."<br>".$sql_insert);
}
}

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


 




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


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

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